Cod sursa(job #2105581)

Utilizator Steve_ITStefan Ursache Steve_IT Data 13 ianuarie 2018 17:41:38
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#define maxim(a, b) ((a>b) ? a : b)

using namespace std;

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

struct date {
    int 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;
    if(c.y1>c.y2) c.y2 = c.y1;
    return c;
}
int aria (date a) {
    return (a.y2-a.y1)*(a.x2-a.x1);
}
int perimetru (date a) {
    return (a.y2-a.y1)*2+(a.x2-a.x1)*2;
}

int 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;
}