Cod sursa(job #3220927)

Utilizator MilitaruMihaiMihaiMIlitaru MilitaruMihai Data 5 aprilie 2024 11:45:38
Problema Rubarba Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream fin("rubarba.in");
ofstream fout("rubarba.out");
const double pi=acos(-1);
const long long lim=1e9;
const double e=1e-10;
struct abc{
    double x,y;
}a[100005];
int n;
double arie(double u)
{
    double cs=cos(u);
    double sn=sin(u);
    double minx=lim;
    double miny=lim;
    double maxx=-lim;
    double maxy=-lim;
    for (int i=1;i<=n;i++)
    {
        double x=a[i].x*cs-a[i].y*sn;
        double y=a[i].x*sn+a[i].y*cs;
        maxx=max(maxx,x);
        maxy=max(maxy,y);
        minx=min(minx,x);
        miny=min(miny,y);
    }
    return (maxx-minx)*(maxy-miny);
}
double cauttern(double st,double dr)
{
    if (dr-st<e) return st;
    double mij1=st+(dr-st)/3;
    double mij2=dr-(dr-st)/3;
    if (arie(mij1)<arie(mij2)) return cauttern(st,mij2);
        else return cauttern(mij1,dr);
}
int main()
{
    fin>>n;
    for (int i=1;i<=n;i++)
    {
        fin>>a[i].x>>a[i].y;
    }
    cout<<fixed<<setprecision(2)<<arie(cauttern(0,pi/2));
    return 0;
}