Cod sursa(job #998904)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 18 septembrie 2013 18:23:52
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
struct dreptunghi {long long x1,y1,x2,y2;};
dreptunghi a,b,c;
dreptunghi Int (dreptunghi x, dreptunghi y)
{
    dreptunghi crt;
    crt.x1=max(x.x1,y.x1);
    crt.y1=max(x.y1,y.y1);
    crt.x2=min(x.x2,y.x2);
    crt.y2=min(x.y2,y.y2);
    if (crt.x1>crt.x2 || crt.y1>crt.y2)
        crt.x1=crt.x2=crt.y1=crt.y2=0;
    return crt;
}

long long aria(dreptunghi x)
{
    return 1LL*(x.x2-x.x1)*(x.y2-x.y1);
}
long long perim(dreptunghi x)
{
    return 2LL*((x.x2-x.x1)+(x.y2-x.y1));
}
int main()
{
    fstream f,g;
    f.open("reuniune.in",ios::in);
    g.open("reuniune.out",ios::out);
    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;

    long long perimetru=perim(a)+perim(b)+perim(c)-perim(Int(a,b))-perim(Int(b,c))-perim(Int(c,a))+perim(Int(Int(a,b),c));
    long long arie=aria(a)+aria(b)+aria(c)-aria(Int(a,b))-aria(Int(b,c))-aria(Int(c,a))+aria(Int(Int(a,b),c));
    g<<arie<<" "<<perimetru;
}