Pagini recente » Cod sursa (job #1466632) | Cod sursa (job #546731) | Cod sursa (job #1180257) | Cod sursa (job #541706) | Cod sursa (job #1448784)
#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream fin("rubarba.in");
ofstream fout("rubarba.out");
#define MAX 100003
#define eps 1e-16
#define PI 3.141592653589
typedef long double ld;
pair <int, int> a[MAX];
int n;
ld maxx, minx, maxy, miny;
ld f(ld angle)
{
ld s = sin(angle);
ld c = cos(angle);
for(int i = 1 ; i <= n ; i ++)
{
ld x = (ld)a[i].first * c - (ld)a[i].second * s;
ld y = (ld)a[i].first * s + (ld)a[i].second * c;
if(i == 1)
{
maxx = minx = x;
maxy = miny = y;
}
maxx = max(x, maxx);
minx = min(x, minx);
maxy = max(y, maxy);
miny = min(y, miny);
}
return (maxx - minx) * (maxy - miny);
}
int main()
{
int i;
fin >> n;
for(i = 1 ; i <= n ; i++)
fin >> a[i].first >> a[i].second;
ld st = 0;
ld dr = PI / 2.0;
while(dr - st >= eps)
{
ld mij1 = st + (dr - st) / 3.0;
ld mij2 = dr - (dr - st) / 3.0;
if(f(mij1) < f(mij2))
dr = mij2;
else
st = mij1;
}
fout << fixed << setprecision(2) << f(st);
}