Cod sursa(job #2177025)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 18 martie 2018 12:17:20
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#define maxim(a, b) ((a>b) ? a : b)

using namespace std;

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

struct date {
    long long x1, x2, y1, y2;
};
date intersectie (date a, date b) {
    date c;
    c.x1 = max(a.x1, b.x1);
    c.x2 = min(a.x2, b.x2);
    c.y1 = max(a.y1, b.y1);
    c.y2 = min(a.y2, b.y2);
    if(c.x2<c.x1) c.x2 = c.x1 = c.y2 = c.y1 = 0;
    if(c.y1>c.y2) c.y2 = c.y1 = 0;
    return c;
}
long long aria (date a) {
    return (a.y2-a.y1)*(a.x2-a.x1);
}
long long perimetru (date a) {
    return (a.y2-a.y1)*2+(a.x2-a.x1)*2;
}

long long i, j, p, ar;
date a, b, c, ab, ac, bc, abc;

int main()
{
    f>>a.x1>>a.y1>>a.x2>>a.y2;
    f>>b.x1>>b.y1>>b.x2>>b.y2;
    f>>c.x1>>c.y1>>c.x2>>c.y2;
    ab = intersectie(a, b);
    ac = intersectie(a, c);
    bc = intersectie(b, c);
    abc = intersectie(ac, b);
    ar = aria(a) + aria(b) + aria(c) - aria(ab) - aria(ac) - aria(bc) + aria(abc);
    p = perimetru(a) + perimetru(b) + perimetru(c) - perimetru(ab) - perimetru(ac) - perimetru(bc) + perimetru(abc);
    g<<ar<<' '<<p;
    return 0;
}