Cod sursa(job #1150945)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 23 martie 2014 18:52:53
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<fstream>
#include<cmath>
using namespace std;
struct dreptunghi
{
    long long x1;
    long long y1;
    long long x2;
    long long y2;
};
long long perimetru(dreptunghi a)
{
    long long lungime=fabs(a.x2-a.x1);
    long long latime=fabs(a.y2-a.y1);
    return lungime*2+latime*2;
}
long long arie(dreptunghi a)
{
    long long lungime=fabs(a.x2-a.x1);
    long long latime=fabs(a.y2-a.y1);
    return lungime*latime;
}
dreptunghi reuniune(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(c.x2<c.x1||c.y2<c.y1)
        c.x1=c.x2=c.y1=c.y2=0;
    return c;
}
int main()
{
    ifstream f("reuniune.in");
    ofstream g("reuniune.out");
    dreptunghi a,b,c;
    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;
    dreptunghi reuniune_totala=reuniune(reuniune(a, b), c);
    long long arie_totala=arie(a)+arie(b)+arie(c)-arie(reuniune(a, b))-arie(reuniune(b, c))-arie(reuniune(a, c))+arie(reuniune_totala);
    long long perimetru_total=perimetru(a)+perimetru(b)+perimetru(c)-perimetru(reuniune(a, b))-perimetru(reuniune(b,c))-perimetru(reuniune(a, c))+perimetru(reuniune_totala);
    g<<arie_totala<<" "<<perimetru_total;
    return 0;
}