Cod sursa(job #1901946)

Utilizator logo9Bocicov Vitalie logo9 Data 4 martie 2017 12:08:22
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dreptunghi
{
    long long x1,y1,x2,y2;
}a,b,c,d,e,q,h;

void intersectie(dreptunghi p, dreptunghi q, dreptunghi &r)
{
    r.x1=max(p.x1,q.x1);
    r.y1=max(p.y1,q.y1);

    r.x2=min(p.x2,q.x2);
    r.y2=min(p.y2,q.y2);
    if(r.x1>r.x2 || r.y1>r.y2)
    {
        r.x1=0;
        r.y1=0;
        r.x2=0;
        r.y2=0;
    }
}
long long arie (dreptunghi p)
{
    return ((p.x2-p.x1)*(p.y2-p.y1));
}

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

long long z,k,sa,sp;
int main()
{
    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;
    intersectie(a,c,d);
    intersectie(a,b,e);
    intersectie(b,c,q);
    intersectie(d,b,h);
    sa=arie(a)+arie(b)+arie(c)-arie(d)-arie(e)-arie(q)+arie(h);
    sp=perimetru(a)+perimetru(b)+perimetru(c)-perimetru(d)-perimetru(e)-perimetru(q)+perimetru(h);

    g<<sa<<' '<<sp;
    return 0;
}