#include #include #include #include #include using namespace std; int main() { cout << fixed << setprecision(9); int N; while (cin >> N) { vector> v(N); for (auto& [x, y] : v) cin >> x >> y; if (N == 4) { cout << abs(v[2].first-v[0].first) * abs(v[2].second-v[0].second) << endl; continue; } double x1, y1, x2, y2; for (;;) { double x0 = 1e9, y0 = 1e9; x2 = -1e9; y2 = -1e9; for (auto const& [x, y] : v) { x0 = min(x0, x); y0 = min(y0, y); x2 = max(x2, x); y2 = max(y2, y); } if (find(v.begin(), v.end(), pair{x2, y2}) != v.end()) { for (auto& [x, y] : v) { swap(x, y); x = -x; } continue; } for (auto const& [x, y] : v) { if (x != x0 && x != x2) x1 = x; if (y != y0 && y != y2) y1 = y; } x1 -= x0; y1 -= y0; x2 -= x0; y2 -= y0; break; } double ret = x1 * y1; for (int swp = 0; swp < 2; swp++, swap(x1, y1), swap(x2, y2)) { //(y+y1) / (x-x1) = (y2-y1) / (x1-a) //(y1-y) / (x-x1) = (y2-y1) / (x1+a) //x1*y - a*y + x1*y1 - a*y1 - x*y2 + x*y1 + x1*y2 - x1*y1 = 0 //x1*y1 + a*y1 - x1*y - a*y - x*y2 + x*y1 + x1*y2 - x1*y1 = 0 //a*y1 - x1*y = 0 //a = x1*y/y1 //(-x1/y1)*y^2 + x1*y2 = (y2-y1)*x double x = x1*y2/(y2-y1), y = 0; ret += (min(x,x2)-x1) * y1; ret -= (x1*y1*y1/3) / (y2-y1); if (x > x2) { y = sqrt((x1*y2 - (y2-y1)*x2) * y1 / x1); ret += (x-x2) * (y1-y); ret += (x1/y1*y*y*y/3) / (y2-y1); } } cout << ret << endl; } }