Pagini recente » Cod sursa (job #401579) | Cod sursa (job #1267501) | Cod sursa (job #1478187) | Cod sursa (job #1312516) | Cod sursa (job #2957993)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
const double EPS = 1e-9;
ifstream fin( "rubarba.in" );
ofstream fout( "rubarba.out" );
struct Point{
int x;
int y;
};
Point v[NMAX];
int n;
double aria( double angle ) {
int i;
double xn, yn, xmax, xmin, ymax, ymin;
xmax = ymax = -1e9;
xmin = ymin = 1e9;
for( i = 0; i < n; i++ ) {
xn = v[i].x * cos( angle ) - v[i].y * sin( angle );
yn = v[i].x * sin( angle ) + v[i].y * cos( angle );
xmax = max( xmax, xn );
xmin = min( xmin, xn );
ymax = max( ymax, yn );
ymin = min( ymin, yn );
}
return ( xmax - xmin ) * ( ymax - ymin );
}
int main() {
int i;
double st, dr, mid, pi;
fin >> n;
for( i = 0; i < n; i++ ) {
fin >> v[i].x >> v[i].y;
}
pi = 2 * acos( 0.0 );
st = 0;
dr = pi / 2;
while( dr - st > EPS ) {
mid = ( st + dr ) / 2;
if( aria( mid ) < aria( mid + EPS ) )
dr = mid;
else
st = mid;
}
fout << setprecision( 2 ) << fixed;
fout << aria( ( st + dr ) / 2 );
return 0;
}