Cod sursa(job #1325239)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 23 ianuarie 2015 16:17:59
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");

struct dreptunghi {long long x1,y1,x2,y2;};
dreptunghi d1,d2,d3,in12,in23,in13,in123;

bool valid(dreptunghi A)
{
    if (A.x2>A.x1 || A.y2>A.y1)
     return 1;
    return 0;
}

void intersect (dreptunghi A, dreptunghi B, dreptunghi &C)
{
    C.x1=max(A.x1,B.x1);
    C.y1=max(A.y1,B.y1);
    C.x2=min(A.x2,B.x2);
    C.y2=min(A.y2,B.y2);
    if (valid(C)) return;
    C.x1=0; C.x2=0;
    C.y1=0; C.y2=0;

}

long long arie (dreptunghi A)
{
    return ((A.x2-A.x1)*(A.y2-A.y1));
}

long long perimetru (dreptunghi A)
{
    return (2*(A.x2-A.x1)+2*(A.y2-A.y1));
}

int main()
{
    f>>d1.x1>>d1.y1>>d1.x2>>d1.y2;
    f>>d2.x1>>d2.y1>>d2.x2>>d2.y2;
    f>>d3.x1>>d3.y1>>d3.x2>>d3.y2;

    intersect(d1,d2,in12);
    intersect(d1,d3,in13);
    intersect(d2,d3,in23);
    intersect(in12,d3,in123);

    g<<arie(d1)+arie(d2)+arie(d3)-arie(in12)-arie(in23)-arie(in13)+arie(in123);
    g<<" ";
    g<<perimetru(d1)+perimetru(d2)+perimetru(d3)-perimetru(in12)-perimetru(in23)-perimetru(in13)+perimetru(in123);
    g<<'\n';

    f.close();
    g.close();
    return 0;
}