#include <bits/stdc++.h>
using namespace std;
int n;
double SS[100001];
double ans = 1e20;
struct vec {
  double x, y;
  vec to(vec u) {
    vec ret;
    ret.x = u.x - x;
    ret.y = u.y - y;
    return ret;
  }
  double dotprod(vec u) { return u.x * x + u.y * y; }
  double len() { return sqrt(x * x + y * y); }
} P[100001];
void solve() {
  for (int i = n + 1; i <= n + n; i++) P[i] = P[i - n];
  SS[0] = 0;
  SS[1] = 0;
  for (int i = 2; i <= n + n; i++)
    SS[i] = SS[i - 1] + 0.5 * (P[i].x * P[i - 1].y - P[i].y * P[i - 1].x);
  int cur = 2;
  for (int i = 1; i <= n; i++) {
    vec dir = P[i].to(P[i + 1]);
    while (dir.dotprod(P[i].to(P[cur + 1])) >= dir.dotprod(P[i].to(P[cur])))
      cur++;
    if (cur == i + 1) ans = 0;
    if (cur >= n + n) break;
    double S = (P[i].to(P[cur])).len();
    double X = dir.dotprod(P[i].to(P[cur])) / dir.len();
    double Y = sqrt(S * S - X * X);
    double D = SS[cur] - SS[i];
    D += 0.5 * (P[i].x * P[cur].y - P[i].y * P[cur].x);
    D = abs(D);
    ans = min(ans, max(abs(X * Y) / 2 - D, 0.000));
  }
}
int main() {
  cin >> n;
  for (int i = n; i >= 1; i--) cin >> P[i].x >> P[i].y;
  solve();
  for (int i = 1; i <= n / 2; i++) swap(P[i], P[n + 1 - i]);
  solve();
  printf("%.10lf", ans);
  return 0;
}
