Cod sursa(job #2274414)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 1 noiembrie 2018 19:26:19
Problema Rubarba Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 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];
int n,i,rez;

double arie(double alpha)
{
    int i;
    double x,y,xmx,xmn,ymx,ymn;
    xmx=ymx=-1000000000.0;
    xmn=ymn=1000000000.0;
    alpha/=100000000.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=29; i>=0; i--)
    {
        if(rez+(1<<i)<628318530 && arie(1.0*(rez+(1<<i)-1))>arie(1.0*(rez+(1<<i))))
            rez=rez+(1<<i);
    }
    fo<<setprecision(2)<<fixed<<arie(rez)<<"\n";
    fi.close();
    fo.close();
    return 0;
}