Pagini recente » Cod sursa (job #2316755) | Cod sursa (job #1557721) | Cod sursa (job #45366) | Cod sursa (job #1535163) | Cod sursa (job #2340040)
#include <bits/stdc++.h>
#include <fstream>
#define MaxN 100005
#define INF 2140000000
#define MOD 1000000007
#define eps 1e-17
#define pi 1.5707963267948966192313216916398
using namespace std;
ifstream in("rubarba.in");
ofstream out("rubarba.out");
int N;
pair<long double,long double>v[MaxN];
long double calc(long double angle)
{ long double MaxX=-INF,MaxY=-INF,MinX=INF,MinY=INF,s=sin(angle),c=cos(angle);
for(int i=1;i<=N;i++)
{ long double x=v[i].first*c-v[i].second*s;
long double y=v[i].first*s+v[i].second*c;
MinX=min(x,MinX);
MinY=min(y,MinY);
MaxX=max(x,MaxX);
MaxY=max(y,MaxY);}
return (MaxX-MinX)*(MaxY-MinY);
}
int main()
{
in>>N;
for(int i=1;i<=N;i++)
in>>v[i].first>>v[i].second;
long double lw=0,hi=pi,mid;
while(hi-lw>eps)
{
mid=lw+(hi-lw)/2;
if(calc(mid)>calc(mid+eps)) lw=mid;
else hi=mid;
}
out<<fixed<<setprecision(2)<<calc(mid);
return 0;
}