Pagini recente » Cod sursa (job #232953) | Cod sursa (job #735130) | Cod sursa (job #1233016) | Cod sursa (job #1809495) | Cod sursa (job #1723202)
#include<cstdio>
#include<cmath>
#include<algorithm>
#define MAXN 100010
#define EPS 1e-17
#define INF 1e9
using namespace std;
struct Point{
int x;
int y;
};
Point v[MAXN];
int n;
long double minimum(long double a,long double b){
if(a<b)
return a;
return b;
}
long double maximum(long double a,long double b){
if(a>b)
return a;
return b;
}
long double Compute(long double value){
int i;
long double minX=INF,minY=INF,maxX=-INF,maxY=-INF,Sine=sin(value),Cosine=cos(value),x,y;
for(i=1;i<=n;i++){
x=v[i].x*Cosine-v[i].y*Sine;
y=v[i].x*Sine+v[i].y*Cosine;
minX=min(minX,x);
minY=min(minY,y);
maxX=max(maxX,x);
maxY=max(maxY,y);
}
return (maxX-minX)*(maxY-minY);
}
int main(){
freopen("rubarba.in","r",stdin);
freopen("rubarba.out","w",stdout);
int i;
long double left=0,right=2*atan(1),middle;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].x,&v[i].y);
while(right-left>EPS){
middle=(left+right)/2.0;
if(Compute(middle+EPS)<Compute(middle))
left=middle;
else
right=middle;
}
printf("%.2Lf",Compute(left));
return 0;
}