Pagini recente » Cod sursa (job #1018881) | Cod sursa (job #3189260) | Cod sursa (job #2903125) | Cod sursa (job #2851994) | Cod sursa (job #2957997)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
const long double EPS = 1e-18;
ifstream fin( "rubarba.in" );
ofstream fout( "rubarba.out" );
struct Point{
long double x;
long double y;
};
Point v[NMAX];
int n;
long double aria( long double angle ) {
int i;
long double xn, yn, xmax, xmin, ymax, ymin;
xmax = ymax = -1e18;
xmin = ymin = 1e18;
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;
long 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 ) )
st = mid;
else
dr = mid;
}
fout << setprecision( 2 ) << fixed;
fout << aria( ( st + dr ) / 2 );
return 0;
}