Cod sursa(job #1691131)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 16 aprilie 2016 22:24:45
Problema Reuniune Scor 100
Compilator cpp Status done
Runda homealone_2 Marime 1.17 kb
#include <fstream>

using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

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

dreptunghi X, Y, Z;
dreptunghi rn1, rn2, rn3, rn4;

long long Ar;
long long Prmt;

long long arie(dreptunghi D)
{
    return (D.l2-D.l1)*(D.c2-D.c1);
}

long long perim(dreptunghi D)
{
    return 2*(D.l2-D.l1)+2*(D.c2-D.c1);
}

void inter(dreptunghi A, dreptunghi B, dreptunghi &C)
{
    C.l1=max(A.l1, B.l1);
    C.c1=max(A.c1, B.c1);
    C.l2=min(A.l2, B.l2);
    C.c2=min(A.c2, B.c2);
    if (C.l1>C.l2 || C.c1>C.c2)
    {
        C.l1=0;
        C.l2=0;
        C.c1=0;
        C.c2=0;
    }
}

int main()
{
    fin >> X.l1 >> X.c1 >> X.l2 >> X.c2;
    fin >> Y.l1 >> Y.c1 >> Y.l2 >> Y.c2;
    fin >> Z.l1 >> Z.c1 >> Z.l2 >> Z.c2;
    inter(X, Y, rn1);
    inter(X, Z, rn2);
    inter(Y, Z, rn3);
    inter(rn1, Z, rn4);
    Ar=arie(X)+arie(Y)+arie(Z)-arie(rn1)-arie(rn3)-arie(rn2)+arie(rn4);
    Prmt=perim(X)+perim(Y)+perim(Z)-perim(rn1)-perim(rn2)-perim(rn3)+perim(rn4);
    fout << Ar << " " << Prmt << '\n';
    fin.close();
    fout.close();
    return 0;
}