Cod sursa(job #3299836)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 10 iunie 2025 20:07:50
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <bits/stdc++.h>

using namespace std;

#define STDIO 0
#if STDIO
    #define fin cin
    #define fout cout
#else
    ifstream fin("reuniune.in");
    ofstream fout("reuniune.out");
#endif  // STDIO

struct Dreptunghi {
    long long x0, y0, x1, y1;
} dr1, dr2, dr3;

static inline long long Arie(Dreptunghi& a) {
    return (a.x1 - a.x0) * (a.y1 - a.y0);
}

static inline long long Peri(Dreptunghi& a) {
    return 2 * ((a.x1 - a.x0) + (a.y1 - a.y0));
}

static inline Dreptunghi Unire(Dreptunghi a, Dreptunghi b) {
    long long x0 = max(a.x0, b.x0);
    long long y0 = max(a.y0, b.y0);
    long long x1 = min(a.x1, b.x1);
    long long y1 = min(a.y1, b.y1);

    if(x0 > x1 || y0 > y1) return {0, 0, 0, 0};
    return {x0, y0, x1, y1};
}

int main() {
    fin >> dr1.x0 >> dr1.y0 >> dr1.x1 >> dr1.y1;
    fin >> dr2.x0 >> dr2.y0 >> dr2.x1 >> dr2.y1;
    fin >> dr3.x0 >> dr3.y0 >> dr3.x1 >> dr3.y1;

    Dreptunghi d12 = Unire(dr1, dr2);
    Dreptunghi d23 = Unire(dr2, dr3);
    Dreptunghi d13 = Unire(dr1, dr3);
    Dreptunghi d123 = Unire(Unire(dr1, dr2), dr3);

    fout << Arie(dr1) + Arie(dr2) + Arie(dr3) - Arie(d12) - Arie(d23) - Arie(d13) + Arie(d123) << " ";
    fout << Peri(dr1) + Peri(dr2) + Peri(dr3) - Peri(d12) - Peri(d23) - Peri(d13) + Peri(d123);


    return 0;
}