Pagini recente » Cod sursa (job #2669376) | Cod sursa (job #1718008) | Cod sursa (job #1014479) | Cod sursa (job #1024955) | Cod sursa (job #2161792)
#include <bits/stdc++.h>
#define MaxN 1005
#define INF 2140000000
#define MOD 1000000007
#define eps 1e-4
#define pi 3.1415926535897932384626433832795
using namespace std;
FILE *IN=fopen("rubarba.in","r"),*OUT=fopen("rubarba.out","w");
int N,X,Y;
pair<double,double> v[MaxN];
double calc(double angle)
{
double MaxX=-INF,MaxY=-INF,MinX=INF,MinY=INF,s=sin(angle),c=cos(angle);
for(int i=1;i<=N;i++)
{
double x=v[i].first*c-v[i].second*s;
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()
{
fscanf(IN,"%d",&N);
for(int i=1;i<=N;i++)
fscanf(IN,"%d%d",&X,&Y),v[i]={X,Y};
double lw=0,hi=pi/2,mid;
while(hi-lw>eps)
{
mid=(lw+hi)/2.0;
double c1=calc(mid),c2=calc(mid+eps);
if(c1<c2)
hi=mid;
else lw=mid;
}
fprintf(OUT,"%.2f\n",calc(hi));
return 0;
}