Pagini recente » Cod sursa (job #2164997) | Cod sursa (job #2675447) | Cod sursa (job #1383806) | Cod sursa (job #2846473) | Cod sursa (job #3133197)
#include <bits/stdc++.h>
#define L 100005
#define EPS .000000000000000001
#define PI 3.14159265358979323846
#define INF 1000000005
using namespace std;
ifstream fin("rubarba.in");
ofstream fout("rubarba.out");
struct MS{
int x;
int y;
};
int n;
MS v[L];
long double rectangle(long double angle){
long double mx_x = -INF, mx_y = -INF, mn_x = INF, mn_y = INF;
for (int i = 1; i <= n; i++){
long double sn = sin(angle), cs = cos(angle);
long double x = cs * v[i].x - sn * v[i].y;
long double y = sn * v[i].x + cs * v[i].y;
mn_x = min(mn_x, x);
mx_x = max(mx_x, x);
mn_y = min(mn_y, y);
mx_y = max(mx_y, y);
}
return (mx_x - mn_x) * (mx_y - mn_y);
}
int main(){
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i].x >> v[i].y;
long double le = 0, ri = PI / 4, best = -1;
while (ri - le > EPS){
long double mid = (le + ri) / 2;
if (rectangle(mid) < rectangle(mid + EPS)){
ri = mid;
best = mid;
}
else{
le = mid;
best = mid;
}
}
fout << fixed << setprecision(2);
fout << rectangle(best) << "\n";
return 0;
}