Cod sursa(job #1901767)

Utilizator AndreiTudorSpiruAndrei Spiru AndreiTudorSpiru Data 4 martie 2017 11:03:41
Problema Reuniune Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long q1,q2,w1,w2,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4;
struct dreptunghi
{long long a,b,c,d;

}x1,x2,x3,q,w,e,r;
void intersectie(dreptunghi k,dreptunghi r,dreptunghi &h)
{
    h.a=max(k.a,r.a);
    h.b=max(k.b,r.b);
    h.c=min(k.c,r.c);
    h.d=min(k.d,r.d);
    if(h.a>h.c||h.b>h.d)
    {h.a=h.b=h.c=h.d=0;
    }
}
long long arie(dreptunghi x)
{return (x.c-x.a)*(x.d-x.b);
}
long long perimetru(dreptunghi x)
{long long l1,l2;
    l1=x.c-x.a;
    l2=x.d-x.b;
    return 2*l1+2*l2;
}


int main()
{
    f>>x1.a>>x1.b>>x1.c>>x1.d>>x2.a>>x2.b>>x2.c>>x2.d>>x3.a>>x3.b>>x3.c>>x3.d;
    intersectie(x1,x2,q);
    intersectie(x1,x2,w);
    intersectie(x2,x3,e);
    intersectie(q,x3,r);

    g<<arie(x1)+arie(x2)+arie(x3)-arie(q)-arie(w)-arie(e)+arie(r)<<" ";
    g<<perimetru(x1)+perimetru(x2)+perimetru(x3)-perimetru(q)-perimetru(w)-perimetru(e)+perimetru(r);
    return 0;
}