Pagini recente » Cod sursa (job #1895189) | Cod sursa (job #740531) | Cod sursa (job #1586124) | Cod sursa (job #3194300) | Cod sursa (job #2034591)
#include <cstdio>
#include <algorithm>
struct Dreptunghi {
int x1;
int y1;
int x2;
int y2;
void scan() {
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
}
};
Dreptunghi intersection(Dreptunghi d1, Dreptunghi d2) {
Dreptunghi inter;
inter.x1 = std::max(d1.x1, d2.x1);
inter.y1 = std::max(d1.y1, d2.y1);
inter.x2 = std::min(d1.x2, d2.x2);
inter.y2 = std::min(d1.y2, d2.y2);
return inter;
}
int arie(Dreptunghi d) {
if (d.x2 >= d.x1 && d.y2 >= d.y1) {
return (d.x2 - d.x1) * (d.y2 - d.y1);
}
return 0;
}
int perimetru(Dreptunghi d) {
if (d.x2 >= d.x1 && d.y2 >= d.y1) {
return 2 * ((d.x2 - d.x1) + (d.y2 - d.y1));
}
return 0;
}
int main() {
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
Dreptunghi d[3];
d[0].scan();
d[1].scan();
d[2].scan();
int ar = 0;
int per = 0;
for (int i = 1; i < 8; i++) {
Dreptunghi inter;
int nr = 0;
for (int j = 0; j < 3; j++) {
if (i & (1 << j)) {
if (nr == 0) {
inter = d[j];
} else {
inter = intersection(inter, d[j]);
}
nr++;
}
}
int sign;
if (nr % 2 == 1) {
sign = 1;
} else {
sign = -1;
}
ar += sign * arie(inter);
per += sign * perimetru(inter);
}
printf("%d %d\n", ar, per);
return 0;
}