#include <bits/stdc++.h>
using namespace std;
constexpr int N = 4.1e4;
int n;
int sgn(double x) { return x < -1e-8 ? -1 : x > 1e-8 ? 1 : 0; }
struct P {
  double x, y;
  P() : x(0), y(0) {}
  P(double x, double y) : x(x), y(y) {}
  double crs(const P& a, const P& b) const {
    return (a.x - x) * (b.y - y) - (a.y - y) * (b.x - x);
  }
  double dot(const P& a, const P& b) const {
    return (a.x - x) * (b.x - x) + (a.y - y) * (b.y - y);
  }
  double mod() const { return hypot(x, y); }
  double mod2() const { return x * x + y * y; }
  P operator-(const P& a) const { return P(x - a.x, y - a.y); }
} a[N * 2], o;
double scn() {
  double ans = 1e100, cur = 0;
  int p = 0;
  for (int i = 0; i < n; ++i) {
    P u = a[i + 1] - a[i];
    while (sgn(o.dot(u, a[p + 1] - a[p])) > 0) {
      cur += o.crs(a[p], a[p + 1]);
      ++p;
    }
    double l = a[i].dot(a[i + 1], a[p]);
    l /= (a[i + 1] - a[i]).mod2();
    P v(a[i].x + (a[i + 1].x - a[i].x) * l, a[i].y + (a[i + 1].y - a[i].y) * l);
    double sa = o.crs(a[i], v) + o.crs(v, a[p]);
    ans = min(ans, fabs(sa - cur));
    cur -= o.crs(a[i], a[i + 1]);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> a[i].x >> a[i].y;
  if (sgn(a[0].crs(a[1], a[2])) < 0) {
    reverse(a, a + n);
  }
  for (int i = 0; i < n; ++i) a[i + n] = a[i];
  for (int i = 1; i < n; ++i) {
    if (sgn(a[i].dot(a[i - 1], a[i + 1])) >= 0) {
      cout << "0\n";
      return 0;
    }
  }
  double ans = scn();
  for (int i = 0; i < 2 * n; ++i) a[i].x = -a[i].x;
  reverse(a, a + 2 * n);
  ans = min(ans, scn());
  cout << setprecision(15) << fixed << ans / 2 << endl;
  return 0;
}
