Cod sursa(job #1001816)

Utilizator mvcl3Marian Iacob mvcl3 Data 26 septembrie 2013 10:50:42
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#define IN "reuniune.in"
#define OUT "reuniune.out"

std :: ifstream f(IN);
std :: ofstream g(OUT);

int P, Aria;

struct DREPTUNGHI
{
    int X0, X1, Y0, Y1;
}   A, B, C;

inline int PERIMETRU(DREPTUNGHI punct)
{
    return 2 * (punct.X1 - punct.X0 + punct.Y1 - punct.Y0);
}

inline int ARIA(DREPTUNGHI punct)
{
    return (punct.X1 - punct.X0) * (punct.Y1 - punct.Y0);
}

inline DREPTUNGHI INTERSECTIE(DREPTUNGHI a, DREPTUNGHI b)
{
    DREPTUNGHI point;
    point.X0 = std :: max(a.X0, b.X0);
    point.X1 = std :: min(a.X1, b.X1);
    point.Y0 = std :: max(a.Y0, b.Y0);
    point.Y1 = std :: min(a.Y1, b.Y1);

    return point;
}

int main()
{
    f >> A.X0 >> A.Y0 >> A.X1 >> A.Y1;
    f >> B.X0 >> B.Y0 >> B.X1 >> B.Y1;
    f >> C.X0 >> C.Y0 >> C.X1 >> C.Y1;
    Aria = ARIA(A) + ARIA(B) + ARIA(C) - ARIA(INTERSECTIE(A, B)) - ARIA(INTERSECTIE(A, C)) -
           ARIA(INTERSECTIE(B, C)) + ARIA(INTERSECTIE(INTERSECTIE(A, B), C));

    P = PERIMETRU(A) + PERIMETRU(B) + PERIMETRU(C) - PERIMETRU(INTERSECTIE(A, B)) -
        PERIMETRU(INTERSECTIE(A, C)) - PERIMETRU(INTERSECTIE(B, C)) + PERIMETRU(INTERSECTIE(INTERSECTIE(A, B), C));

    g << Aria << ' ' << P << '\n';
    g.close();
    return 0;
}