Cod sursa(job #3143563)

Utilizator alex210046Bratu Alexandru alex210046 Data 31 iulie 2023 13:02:02
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");

struct dreptunghi {
    long long x0, y0, x1, y1;
} d1, d2, d3;

dreptunghi inter(dreptunghi a,dreptunghi b) {
    long long x0 = max(a.x0,b.x0),
    y0 = max(a.y0,b.y0),
    x1 = min(a.x1,b.x1),
    y1 = min(a.y1,b.y1);
    return {x0, y0, x1, y1};
}

inline long long arie(dreptunghi a) {
    return (a.x0 > a.x1 || a.y0 > a.y1) ? 0 : (a.x1 - a.x0) * (a.y1 - a.y0);
}

inline long long per(dreptunghi a)
{
    return (a.x0 > a.x1 || a.y0 > a.y1) ? 0 : 2 * (a.x1 - a.x0 + a.y1 - a.y0);
}

int main()
{
    f >> d1.x0 >> d1.y0 >> d1.x1 >> d1.y1 >> d2.x0 >> d2.y0 >> d2.x1 >> d2.y1 >> d3.x0 >> d3.y0 >> d3.x1 >> d3.y1;
    long long a = arie(d1) + arie(d2) + arie(d3)
            - arie(inter(d1,d2)) - arie(inter(d1,d3)) - arie(inter(d2,d3))
            + arie(inter(d1,inter(d2,d3)));
    long long p = per(d1) + per(d2) + per(d3)
            - per(inter(d1,d2)) - per(inter(d1,d3)) - per(inter(d2,d3))
            + per(inter(d1,inter(d2,d3)));
    g << a << ' ' << p;

    f.close();
    g.close();
    return 0;
}