Cod sursa(job #1439184)

Utilizator Miruna_DMiruna Miruna_D Data 21 mai 2015 18:43:51
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;


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

struct Drept
{
    long long x1,y1,x2,y2;

};

Drept d1,d2,d3,a,b,c,d;



void Interior(Drept A,Drept B,Drept &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 (C.x1>C.x2 || C.y1>C.y2)
    {
        C.x1=0;C.x2=0;C.y1=0;C.y2=0;
    }
}

long long Aria(Drept A)
{
    return ((A.x2-A.x1)*(A.y2-A.y1));
}

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

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

    Interior(d1,d2,a);
    Interior(d1,d3,b);
    Interior(d2,d3,c);
    Interior(a,d3,d);
    fout<<Aria(d1)+Aria(d2)+Aria(d3)-Aria(a)-Aria(b)-Aria(c)+Aria(d)<<' ';
    fout<<Perimetru(d1)+Perimetru(d2)+Perimetru(d3)-Perimetru(a)-Perimetru(b)-Perimetru(c)+Perimetru(d)<<' ';
}