#include <bits/stdc++.h>
using namespace std;
class vec {
 public:
  double x, y;
  vec() {}
  vec(double tx, double ty) { x = tx, y = ty; }
  double operator*(const vec &t) const { return x * t.y - y * t.x; }
  double operator^(const vec &t) const { return x * t.x + y * t.y; }
  vec operator-(const vec &t) const { return vec(x - t.x, y - t.y); }
  vec operator/(const double &t) const { return vec(x / t, y / t); }
  double len() { return sqrt(x * x + y * y); }
} p[40010];
int n;
inline int nxt(int x) { return (x + 1) % n; }
inline int pre(int x) { return (x + n - 1) % n; }
inline double solve() {
  double ret = 1e18, S = 0;
  for (int i = 0, j = 1; i < n; i++) {
    while (((p[nxt(j)] - p[j]) ^ (p[nxt(i)] - p[i])) > 0) {
      S += fabs((p[j] - p[i]) * (p[nxt(j)] - p[i]));
      j = nxt(j);
    }
    double c = (p[i] - p[j]).len(),
           a = ((p[i] - p[nxt(i)]) * (p[i] - p[j])) / (p[i] - p[nxt(i)]).len();
    double b = sqrt(c * c - a * a);
    ret = min(ret, fabs(fabs(S) - fabs(a * b)));
    S -= fabs((p[j] - p[i]) * (p[nxt(i)] - p[i]));
  }
  return ret / 2;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);
  double ans = solve();
  reverse(p, p + n);
  ans = min(ans, solve());
  printf("%.12lf\n", ans);
  return 0;
}
