Cod sursa(job #709104)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 7 martie 2012 17:45:42
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
#include <algorithm>
using namespace std;

struct dr {
    long long x1, x2;
    long long y1, y2;
};
dr d[5];


int inters(long long x, long long y)
{
    dr a = d[x];
    dr b = d[y];
    d[4].x1 = max(a.x1, b.x1);
    d[4].x2 = min(a.x2, b.x2);
    d[4].y1 = max(a.y1, b.y1);
    d[4].y2 = min(a.y2, b.y2);
    if((d[4].x1 > d[4].x2) || (d[4].y1 > d[4].y2)) {
        d[4].x1 = 0;
        d[4].x2 = 0;
        d[4].y1 = 0;
        d[4].y2 = 0;
    }
    return 4;
}

long long arie(long long x)
{
    return 1LL * (d[x].x2 - d[x].x1) * (d[x].y2 - d[x].y1);
}

long long perim(long long x)
{
    return ((d[x].x2 - d[x].x1) + (d[x].y2 - d[x].y1)) * 2;
}

int main()
{
    long long i;
    freopen ("reuniune.in", "r", stdin);
    freopen ("reuniune.out", "w", stdout);
    for(i = 1; i <= 3; ++i)
        scanf("%lld %lld %lld %lld", &d[i].x1, &d[i].y1, &d[i].x2, &d[i].y2);
    printf("%lld ", arie(1) + arie(2) + arie(3) - arie(inters(1, 2)) - arie(inters(1, 3)) - arie(inters(2, 3)) + arie(inters(1, inters(2, 3))));
    printf("%lld\n", perim(1) + perim(2) + perim(3) - perim(inters(1, 2)) - perim(inters(1, 3)) - perim(inters(2, 3)) + perim(inters(1, inters(2, 3))));
    return 0;
}