Cod sursa(job #1732664)

Utilizator cristina_borzaCristina Borza cristina_borza Data 22 iulie 2016 11:13:40
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

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

struct bla {
    long long l1 , l2 , c1 , c2;
};

bla d1 , d2 , d3 , d12 , d23 , d13 , d123;

void intersect(bla &a , bla b , bla c) {
    a.l1 = max(b.l1 , c.l1);
    a.c1 = max(b.c1 , c.c1);
    a.l2 = min(b.l2 , c.l2);
    a.c2 = min(b.c2 , c.c2);

    if (a.l1 > a.l2 || a.c1 > a.c2) {
        a.l1 = a.l2 = a.c1 = a.c2 = 0;
    }
}

long long arie(bla a) {
    return (a.l2 - a.l1) * (a.c2 - a.c1);
}

long long peri(bla a) {
    return 2 * ((a.l2 - a.l1) + (a.c2 - a.c1));
}

int main() {
    f >> d1.l1 >> d1.c1 >> d1.l2 >> d1.c2;
    f >> d2.l1 >> d2.c1 >> d2.l2 >> d2.c2;
    f >> d3.l1 >> d3.c1 >> d3.l2 >> d3.c2;

    intersect(d12 , d1 , d2);
    intersect(d13 , d1 , d3);
    intersect(d23 , d2 , d3);
    intersect(d123 , d12 , d3);

    long long ans1 = arie(d1) + arie(d2) + arie(d3) - arie(d12) - arie(d13) - arie(d23) + arie(d123);
    long long ans2 = peri(d1) + peri(d2) + peri(d3) - peri(d12) - peri(d13) - peri(d23) + peri(d123);

    g << ans1 << " " << ans2;
    return 0;
}