Cod sursa(job #1178965)

Utilizator acomAndrei Comaneci acom Data 27 aprilie 2014 16:45:27
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct drept
{
    int x0,y0,x1,y1;
} O,a,b,c,d,e,f,g;
long long ar,pr;
long long arie(drept A)
{
    long long x=A.x1-A.x0,y=A.y1-A.y0;
    return x*y;
}
long long peri(drept A)
{
    long long x=A.x1-A.x0,y=A.y1-A.y0;
    return (x+y)<<1;
}
drept inters(drept A, drept B)
{
    int X0,Y0,X1,Y1;
    drept R;
    X0=max(A.x0,B.x0);
    Y0=max(A.y0,B.y0);
    X1=min(A.x1,B.x1);
    Y1=min(A.y1,B.y1);
    R.x0=X0, R.y0=Y0, R.x1=X1, R.y1=Y1;
    if (X0>X1 || Y0>Y1) return O;
    else return R;
}
int main()
{
    fin>>a.x0>>a.y0>>a.x1>>a.y1;
    fin>>b.x0>>b.y0>>b.x1>>b.y1;
    fin>>c.x0>>c.y0>>c.x1>>c.y1;
    d=inters(a,b), e=inters(b,c), f=inters(c,a);
    g=inters(c,d);
    ar=arie(a)+arie(b)+arie(c)-arie(d)-arie(e)-arie(f)+arie(g);
    pr=peri(a)+peri(b)+peri(c)-peri(d)-peri(e)-peri(f)+peri(g);
    fout<<ar<<' '<<pr<<'\n';
    return 0;
}