Cod sursa(job #2240989)

Utilizator lil_blocAnonymous Anonymous lil_bloc Data 14 septembrie 2018 16:17:23
Problema Rubarba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#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;}