#include <bits/stdc++.h>
using namespace std;
const long long maxn = 100100;
long long n;
long double ans = 1e20;
struct point {
  long long x, y;
  point(long long _x = 0, long long _y = 0) {
    x = _x;
    y = _y;
  }
  long double len2() { return x * x + y * y; }
  point operator-(point A) { return point(x - A.x, y - A.y); }
} p[maxn];
long long dot(point A, point B) { return A.x * B.x + A.y * B.y; }
long long zcross(point A, point B) { return A.x * B.y - A.y * B.x; }
void solve() {
  long double s = 0, c;
  for (long long i = 0, j = 1; i < n; i++) {
    while (dot(p[i + 1] - p[i], p[j] - p[i]) <=
           dot(p[i + 1] - p[i], p[j + 1] - p[i])) {
      s += abs(zcross(p[j] - p[i], p[j + 1] - p[i]));
      j++;
    }
    if (j >= 2 * n) {
      cout << "GO TO HELL" << endl;
      exit(0);
    }
    assert(j > i);
    c = dot(p[i + 1] - p[i], p[j] - p[i]) / (2 * (p[i + 1] - p[i]).len2()) *
        zcross(p[j] - p[i], p[i + 1] - p[i]);
    ans = min(ans, abs(c) - s / 2);
    s -= abs(zcross(p[i] - p[j], p[i + 1] - p[j]));
  }
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> p[i].x >> p[i].y;
    p[i + n] = p[i];
  }
  solve();
  reverse(p, p + n + n);
  solve();
  cout << fixed << setprecision(30);
  cout << ans << endl;
  return 0;
}
