#include <bits/stdc++.h>
using namespace std;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator+(const PT &p) const { return PT(x + p.x, y + p.y); }
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
  PT operator*(double c) const { return PT(x * c, y * c); }
  PT operator/(double c) const { return PT(x / c, y / c); }
  bool operator<(const PT &p) const {
    return make_pair(x, y) < make_pair(p.x, p.y);
  }
  bool operator==(const PT &p) const {
    return make_pair(x, y) == make_pair(p.x, p.y);
  }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
vector<PT> poly;
int n;
double solve() {
  double ret = 1e18, sum = 0;
  int j = 1;
  for (int i = 0; i < n; i++) {
    while (dot(poly[(j + 1) % n] - poly[j], poly[(i + 1) % n] - poly[i]) > 0)
      sum += fabs(cross(poly[i] - poly[j], poly[i] - poly[(j + 1) % n])) / 2,
          j = (j + 1) % n;
    double h = dot(poly[i] - poly[j], poly[i] - poly[j]);
    double angle = atan2(cross(poly[(i + 1) % n] - poly[i], poly[j] - poly[i]),
                         dot(poly[(i + 1) % n] - poly[i], poly[j] - poly[i]));
    h *= sin(angle * 2) / 4;
    ret = min(ret, fabs(fabs(h) - fabs(sum)));
    sum -= fabs(cross(poly[j] - poly[i], poly[j] - poly[(i + 1) % n]) / 2);
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  poly.resize(n);
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a >> b;
    poly[i] = PT(a, b);
  }
  double ans = solve();
  reverse(poly.begin(), poly.end());
  ans = min(ans, solve());
  cout << fixed << setprecision(9) << ans;
  return 0;
}
