Pagini recente » Cod sursa (job #2070282) | Cod sursa (job #1667426) | Cod sursa (job #2381872) | Cod sursa (job #1019785) | Cod sursa (job #560923)
Cod sursa(job #560923)
#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>
float fi = (float)(M_PI / 180 / 2);
typedef float vect2f[2];
vect2f pos[100000];
int n;
vect2f r1, r2;
void load() {
FILE * f1 = fopen("rubanda.in", "r");
fscanf(f1, "%d", &n);
for (int i = 0; i < n; ++i) {
fscanf(f1, "%f%f", &pos[i][0], &pos[i][1]);
}
fclose(f1);
}
void rotate() {
float a, d;
for (int i = 0; i < n; ++i) {
a = atan2(pos[i][1], pos[i][0]) + fi;
d = sqrt(pos[i][1] * pos[i][1] + pos[i][0] * pos[i][0]);
pos[i][1] = sin(a) * d;
pos[i][0] = cos(a) * d;
}
}
float select() {
r1[0] = pos[0][0];
r1[1] = pos[0][1];
r2[0] = pos[0][0];
r2[1] = pos[0][1];
for (int i = 1; i < n; ++i) {
if (r1[0] > pos[i][0]) {r1[0] = pos[i][0];}
if (r1[1] > pos[i][1]) {r1[1] = pos[i][1];}
if (r2[0] < pos[i][0]) {r2[0] = pos[i][0];}
if (r2[1] < pos[i][1]) {r2[1] = pos[i][1];}
}
return((r2[0] - r1[0]) * (r2[1] - r1[1]));
}
int main() {
load();
float s, min = select();
for (int i = 0; i < 180; ++i) {
rotate();
s = select();
if (min > s) {
min = s;
}
}
FILE * f1 = fopen("rubanda.out", "w");
fprintf(f1, "%.2f\n", min);
fclose(f1);
}