Cod sursa(job #529819)

Utilizator micky000Antal Ioan micky000 Data 6 februarie 2011 09:48:59
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<cstdio>
using namespace std;
 
struct drept
{
    long long x1,y1,x2,y2;
};
 
long long arie(drept x)
{
    return (x.x2-x.x1)*(x.y2-x.y1);
}
 
long long perimetru(drept x)
{
    return 2*(x.x2-x.x1)+2*(x.y2-x.y1);
}
 
long long max(long long x,long long y)
{
    if(x<y)
        return y;
    return x;
}
 
long long min(long long x,long long y)
{
    if(x>y)
        return y;
    return x;
}
 
drept intersectie(drept x,drept y)
{
    drept 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;
}
 
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    drept a,b,c;
    scanf("%lld%lld%lld%lld",&a.x1,&a.y1,&a.x2,&a.y2);
    scanf("%lld%lld%lld%lld",&b.x1,&b.y1,&b.x2,&b.y2);
   scanf("%lld%lld%lld%lld",&c.x1,&c.y1,&c.x2,&c.y2);
    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",perimetru(a)+perimetru(b)+perimetru(c)-perimetru(intersectie(a,b))-perimetru(intersectie(b,c))-perimetru(intersectie(a,c))+perimetru(intersectie(intersectie(b,c),a))); 
    return 0;
}