#include <bits/stdc++.h>
using namespace std;
double sum[1000000];
struct point {
  double x, y;
  point friend operator-(point a, point b) {
    point res;
    res.x = a.x - b.x;
    res.y = a.y - b.y;
    return res;
  }
} p[100000];
double ans = 999999999999999999.0;
int n;
double dian(point a, point b) { return a.x * b.x + a.y * b.y; }
double cha(point a, point b) { return a.x * b.y - a.y * b.x; }
double dis(point a, point b) {
  return sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    double x, y;
    scanf("%lf%lf", &x, &y);
    p[i].x = x;
    p[i].y = y;
  }
  for (int i = 0; i < n; i++) p[i + n] = p[i];
  sum[0] = 0;
  for (int i = 1; i <= 2 * n; i++)
    sum[i] = sum[i - 1] + cha(p[i], p[i - 1]) / 2;
  int j = 1;
  for (int i = 0; i < n; i++) {
    while (dian(p[j + 1] - p[i], p[i + 1] - p[i]) >
               dian(p[j] - p[i], p[i + 1] - p[i]) &&
           j < 2 * n)
      j++;
    if (j == i + 1) {
      ans = 0;
      break;
    }
    double A = dian(p[j] - p[i], p[i + 1] - p[i]) / dis(p[i], p[i + 1]);
    double C = dis(p[j], p[i]);
    double B = sqrt(C * C - A * A);
    double are = A * B / 2.0;
    double S = sum[j] - sum[i] + cha(p[i], p[j]) / 2;
    ans = min(ans, are - fabs(S));
  }
  for (int i = 0; i < n / 2; i++) swap(p[i], p[n - 1 - i]);
  for (int i = 0; i < n; i++) p[i + n] = p[i];
  sum[0] = 0;
  for (int i = 1; i <= 2 * n; i++)
    sum[i] = sum[i - 1] + cha(p[i], p[i - 1]) / 2;
  j = 1;
  for (int i = 0; i < n; i++) {
    while (dian(p[j + 1] - p[i], p[i + 1] - p[i]) >
               dian(p[j] - p[i], p[i + 1] - p[i]) &&
           j < 2 * n)
      j++;
    if (j == i + 1) {
      ans = 0;
      break;
    }
    double A = dian(p[j] - p[i], p[i + 1] - p[i]) / dis(p[i], p[i + 1]);
    double C = dis(p[j], p[i]);
    double B = sqrt(C * C - A * A);
    double are = A * B / 2.0;
    double S = sum[j] - sum[i] + cha(p[i], p[j]) / 2;
    ans = min(ans, are - fabs(S));
  }
  printf("%.9f\n", ans);
}
