Cod sursa(job #489939)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 4 octombrie 2010 09:26:30
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<cstdio>
struct dr
{
    long long x1,y1,x2,y2;
};
dr a,b,c;
void read(dr &x)
{
    scanf("%lld%lld%lld%lld",&x.x1,&x.y1,&x.x2,&x.y2);
}
long long arie(dr x)
{
    return (x.x2-x.x1)*(x.y2-x.y1);
}
long long peri(dr x)
{
    return 2*(x.x2-x.x1)+2*(x.y2-x.y1);
}
long long max(long long x,long long y)
{
    return x<y?y:x;
}
long long min(long long x,long long y)
{
    return x>y?y:x;
}
dr intersectie(dr x,dr y)
{
    dr i;
    i.x1=max(x.x1,y.x1);
    i.y1=max(x.y1,y.y1);
    i.x2=min(x.x2,y.x2);
    i.y2=min(x.y2,y.y2);
    if(i.x1>i.x2 || i.y1>i.y2)
        i.x1=i.x2=i.y1=i.y2=0;
    return i;
}
void afis()
{
    printf("%lld",arie(a)+arie(b)+arie(c)-arie(intersectie(a,b))-arie(intersectie(b,c))-arie(intersectie(a,c))+arie(intersectie(intersectie(b,c),a)));
    printf(" ");
    printf("%lld",peri(a)+peri(b)+peri(c)-peri(intersectie(a,b))-peri(intersectie(b,c))-peri(intersectie(a,c))+peri(intersectie(intersectie(b,c),a)));
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    read(a);
    read(b);
    read(c);
    afis();
    return 0;
}