Pagini recente » Cod sursa (job #3222655) | Cod sursa (job #54381) | Cod sursa (job #2759477) | Cod sursa (job #2830096) | Cod sursa (job #1843366)
#include <cstdio>
typedef long long i64;
typedef unsigned long long ui64;
i64 min(i64 a, i64 b) {
if(a < b)
return a;
return b;
}
i64 max(i64 a, i64 b) {
if(a > b)
return a;
return b;
}
struct Rect {
i64 x1, x2, y1, y2;
Rect operator+ (const Rect &x) {
Rect r;
r.x1 = max(x1, x.x1);
r.x2 = min(x2, x.x2);
r.y1 = max(y1, x.y1);
r.y2 = min(y2, x.y2);
if(r.x1 >= r.x2 || r.y1 >= r.y2)
r.x1 = r.x2 = r.y1 = r.y2 = 0;
return r;
}
};
ui64 arie(Rect x) {
return (x.x2 - x.x1) * (x.y2 - x.y1);
}
ui64 peri(Rect x) {
return 2 * ((x.x2 - x.x1) + (x.y2 - x.y1));
}
int main() {
Rect a, b, c;
FILE *fin = fopen("reuniune.in", "r");
fscanf(fin, "%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld", &a.x1, &a.y1, &a.x2, &a.y2, &b.x1, &b.y1, &b.x2, &b.y2, &c.x1, &c.y1, &c.x2, &c.y2);
fclose(fin);
FILE *fout = fopen("reuniune.out", "w");
fprintf(fout, "%llu ", arie(a) + arie(b) + arie(c) - arie(a + b) - arie(a + c) - arie(b + c) + arie(a + b + c));
fprintf(fout, "%llu ", peri(a) + peri(b) + peri(c) - peri(a + b) - peri(a + c) - peri(b + c) + peri(a + b + c));
fclose(fout);
return 0;
}