Cod sursa(job #2286787)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 20 noiembrie 2018 19:13:44
Problema Rubarba Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#include<iomanip>
#include<math.h>
#define x first
#define y second
using namespace std;
ifstream fi("rubarba.in");
ofstream fo("rubarba.out");
pair<int,int> A[100005];
long long n,i,rez;

long double arie(long double alpha)
{
    int i;
    long double x,y,xmx,xmn,ymx,ymn;
    xmx=ymx=-1000000000.0;
    xmn=ymn=1000000000.0;
    alpha/=1000000000000.0;
    for(i=1; i<=n; i++)
    {
        x=1.0*A[i].x*cos(alpha)-1.0*A[i].y*sin(alpha);
        y=1.0*A[i].x*sin(alpha)+1.0*A[i].y*cos(alpha);
        xmx=max(xmx,x);
        ymx=max(ymx,y);
        xmn=min(xmn,x);
        ymn=min(ymn,y);
    }
    return ((xmx-xmn)*(ymx-ymn));
}

int main()
{
    fi>>n;
    for(i=1; i<=n; i++)
        fi>>A[i].x>>A[i].y;
    for(i=42; i>=0; i--)
    {
        if(rez+(1LL<<i)<6283185307179 && arie(rez+(1LL<<i)-1LL)>arie(rez+(1LL<<i)))
            rez=rez+(1LL<<i);
    }
    fo<<setprecision(2)<<fixed<<arie(rez)<<"\n";
    fi.close();
    fo.close();
    return 0;
}