Cod sursa(job #3359187)

Utilizator g.darius07Gheorghe Darius Nicolae g.darius07 Data 26 iunie 2026 01:08:49
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
using namespace std;

ifstream f("reuniune.in");
ofstream g("reuniune.out");

struct dreptunghi {
    long long x0, y0, x1, y1;
} a[3];

long long A, P;
long long xa, ya, xb, yb;

int main() {
    for(int i = 0; i < 3; i++)
        f >> a[i].x0 >> a[i].y0 >> a[i].x1 >> a[i].y1;
    for(int i = 0; i < 3; i++) {
        A += (a[i].x1 - a[i].x0) * (a[i].y1 - a[i].y0);
        P += 2 * (a[i].x1 - a[i].x0 + a[i].y1 - a[i].y0);
    }
    for(int i = 0; i < 2; i++)
        for(int j = i + 1; j < 3; j++) {
            xa = max(a[i].x0, a[j].x0);
            ya = max(a[i].y0, a[j].y0);
            xb = min(a[i].x1, a[j].x1);
            yb = min(a[i].y1, a[j].y1);
            if(xb > xa && yb > ya) {
                A -= (xb - xa) * (yb - ya);
                P -= 2 * (xb - xa + yb - ya);
            }
        }
    xa = max(a[0].x0, max(a[1].x0, a[2].x0));
    ya = max(a[0].y0, max(a[1].y0, a[2].y0));
    xb = min(a[0].x1, min(a[1].x1, a[2].x1));
    yb = min(a[0].y1, min(a[1].y1, a[2].y1));
    if(xb > xa && yb > ya) {
        A += (xb - xa) * (yb - ya);
        P += 2 * (xb - xa + yb - ya);
    }
    g << A << ' ' << P;
    f.close();
    g.close();
    return 0;
}