Pagini recente » Cod sursa (job #850582) | Cod sursa (job #277916) | Cod sursa (job #1537107) | Cod sursa (job #459654) | Cod sursa (job #2957995)
#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{
int x;
int 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 = ( long double )v[i].x * cos( angle ) - ( long double )v[i].y * sin( angle );
yn = ( long double )v[i].x * sin( angle ) + ( long double )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 ) )
dr = mid;
else
st = mid;
}
fout << setprecision( 2 ) << fixed;
fout << aria( ( st + dr ) / 2 );
return 0;
}