Pagini recente » Cod sursa (job #385318) | Cod sursa (job #2485892) | Cod sursa (job #1750136) | Cod sursa (job #2423031) | Cod sursa (job #2034592)
#include <cstdio>
#include <algorithm>
struct Dreptunghi {
long long x1;
long long y1;
long long x2;
long long y2;
void scan() {
scanf("%lld%lld%lld%lld", &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;
}
long long arie(Dreptunghi d) {
if (d.x2 >= d.x1 && d.y2 >= d.y1) {
return (d.x2 - d.x1) * (d.y2 - d.y1);
}
return 0;
}
long long 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();
long long ar = 0;
long long per = 0;
for (long long i = 1; i < 8; i++) {
Dreptunghi inter;
long long nr = 0;
for (long long j = 0; j < 3; j++) {
if (i & (1 << j)) {
if (nr == 0) {
inter = d[j];
} else {
inter = intersection(inter, d[j]);
}
nr++;
}
}
long long sign;
if (nr % 2 == 1) {
sign = 1;
} else {
sign = -1;
}
ar += sign * arie(inter);
per += sign * perimetru(inter);
}
printf("%lld %lld\n", ar, per);
return 0;
}