Cod sursa(job #3182674)

Utilizator ChingChengHonChiCiucanu Stefan ChingChengHonChi Data 9 decembrie 2023 12:42:21
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;

#define lld long long int

class dr {
public:
    int x0, y0, x1, y1;
} d[4];

lld area(dr h) {
    return 1ll * abs(h.x1 - h.x0) * abs(h.y1 - h.y0);
}

lld per(dr h) {
    return 1ll * 2 * (abs(h.x1 - h.x0) + abs(h.y1 - h.y0));
}

dr inter(dr f, dr k) {
    dr b;

    b.x0 = max(f.x0, k.x0);
    b.y0 = max(f.y0, k.y0);

    b.x1 = min(f.x1, k.x1);
    b.y1 = min(f.y1, k.y1);

    return b;
}

int main(){
    for (int i = 1; i <= 3; ++i) {
        cin >> d[i].x0 >> d[i].y0 >> d[i].x1 >> d[i].y1;
    }

    //cout << area(inter(d[2], d[3])) << '\n';

    lld ar = area(d[1]) + area(d[2]) + area(d[3]) - area(inter(d[1], d[2])) - area(inter(d[2], d[3])) - area(inter(d[1], d[3])) + area(inter(d[1], inter(d[2], d[3])));
    lld pr = per(d[1]) + per(d[2]) + per(d[3]) - per(inter(d[1], d[2])) - per(inter(d[2], d[3])) - per(inter(d[1], d[3])) + per(inter(d[1], inter(d[2], d[3])));

    cout << ar << ' ' << pr << '\n';

    return 0;
}