Cod sursa(job #3279957)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 24 februarie 2025 21:19:17
Problema Rubarba Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <iomanip>
#include <math.h>
using namespace std;

ifstream cin("rubara.in");
ofstream cout("rubara.out");

int n;
struct pct{
    long double x,y;
} v[100001];

long double vf(long double a){
    long double minl,minc,maxl,maxc,s,c,lin,col;
    int i;
    minl=minc=1e9;maxl=maxc=-1e9;
    for(i=1;i<=n;i++){
        s=sin(a);c=cos(a);
        lin=v[i].x*c-v[i].y*s;
        col=v[i].x*s+v[i].y*c;
        maxl=max(maxl,lin);minl=min(minl,lin);
        maxc=max(maxc,col);minc=min(minc,col);
    }
    return (maxl-minl)*(maxc-minc);
}


int main()
{
    int i;long double st,dr,mij;
    cin>>n;
    for(i=1;i<=n;i++) cin>>v[i].x>>v[i].y;
    st=0;dr=1.5;
    while(dr-st>1e-5){//printf("%d %d\n",st,dr);
        mij=(st+dr)/2;
        if(vf(mij)<=vf(mij+(1e-5))){
            dr=mij;
        }else st=mij;
    }
    cout<<fixed<<setprecision(2)<<vf(st);
    return 0;
}