#include <bits/stdc++.h>
using namespace std;
double ans, now, tmp;
int n, i;
struct point {
  double x, y;
} p[100100];
point operator+(point a, point b) { return (point){a.x + b.x, a.y + b.y}; }
point operator-(point a, point b) { return (point){a.x - b.x, a.y - b.y}; }
double operator*(point a, point b) { return a.x * b.x + a.y * b.y; }
point operator*(double t, point a) { return (point){t * a.x, t * a.y}; }
double operator%(point a, point b) { return a.x * b.y - a.y * b.x; }
struct line {
  point x, f;
  line() {}
  line(point a, point b) { x = a, f = b - a; };
};
point normal(point a) { return (point){-a.y, a.x}; }
point inter(line a, line b) {
  point u = a.x - b.x;
  double t = (b.f % u) / (a.f % b.f);
  return a.x + t * a.f;
}
double area(point a, point b, point c) { return abs((b - a) % (c - a) / 2); }
double calc(point x, point y, point a) {
  point t = normal(y - x);
  line o = line(x, y), p;
  p.x = a, p.f = t;
  point b = inter(o, p);
  return area(b, x, a);
}
void solve() {
  int x = 0;
  for (i = 0; i < n; i++) {
    now -= area(p[i], p[(i - 1) % n], p[x]);
    int l = i, r = (i + 1) % n, y = (x + 1) % n;
    while ((p[r] - p[l]) * (p[x] - p[l]) < (p[r] - p[l]) * (p[y] - p[l])) {
      now += area(p[x], p[y], p[l]);
      x = y;
      y = (x + 1) % n;
    }
    tmp = calc(p[l], p[r], p[x]) - now;
    ans = min(ans, tmp);
  }
}
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%lf %lf", &p[i].x, &p[i].y);
  ans = 200000000000000.0;
  solve();
  reverse(p, p + n);
  now = 0.0;
  solve();
  printf("%.15lf\n", ans);
}
