Cod sursa(job #837400)

Utilizator stirbucatalinstirbu catalin stirbucatalin Data 17 decembrie 2012 22:42:59
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <stdio.h>
#include <math.h>
 
long long max(long long a,long long b)
{
    if ( a > b ) return a;
    else return b;
}
 
long long min(long long a,long long b)
{
    if ( a < b ) return a;
    else return b;
}
 
int x,y,z;
 
int main()
{
    long long i,j,k,l;
    long long x0[4],y0[4],x1[4],y1[4];
    long long a,p;
 
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
 
    for (i=0;i<3;i++)
    scanf("%lld%lld%lld%lld",&x0[i],&y0[i],&x1[i],&y1[i]);
 
    a=(x1[0]-x0[0])*(y1[0]-y0[0]);
    a+=(x1[1]-x0[1])*(y1[1]-y0[1]);
    a+=(x1[2]-x0[2])*(y1[2]-y0[2]);
    p=2*(x1[0]-x0[0]+y1[0]-y0[0]);
    p+=2*(x1[1]-x0[1]+y1[1]-y0[1]);
    p+=2*(x1[2]-x0[2]+y1[2]-y0[2]);
 
    if ((max(x0[0],x0[1])<=min(x1[0],x1[1]))&&(max(y0[0],y0[1])<=min(y1[0],y1[1])))
    {
        a-=(min(x1[0],x1[1])-max(x0[0],x0[1]))*(min(y1[0],y1[1])-max(y0[0],y0[1]));
        p-=2*(min(x1[0],x1[1])-max(x0[0],x0[1])+min(y1[0],y1[1])-max(y0[0],y0[1]));
        x=1;
        i=min(x1[0],x1[1]);
        j=max(x0[0],x0[1]);
        k=min(y1[0],y1[1]);
        l=max(y0[0],y0[1]);
    }
 
    if ((max(x0[2],x0[1])<=min(x1[2],x1[1]))&&(max(y0[2],y0[1])<=min(y1[2],y1[1])))
    {
        a-=(min(x1[2],x1[1])-max(x0[2],x0[1]))*(min(y1[2],y1[1])-max(y0[2],y0[1]));
        p-=2*(min(x1[2],x1[1])-max(x0[2],x0[1])+min(y1[2],y1[1])-max(y0[2],y0[1]));
        y=1;
    }
 
    if ((max(x0[0],x0[2])<=min(x1[0],x1[2]))&&(max(y0[0],y0[2])<=min(y1[0],y1[2])))
    {
        a-=(min(x1[0],x1[2])-max(x0[0],x0[2]))*(min(y1[0],y1[2])-max(y0[0],y0[2]));
        p-=2*(min(x1[0],x1[2])-max(x0[0],x0[2])+min(y1[0],y1[2])-max(y0[0],y0[2]));
        z=1;
    }
    if ((x==1)&&(y==1)&&(z==1))
    {
        a+=(min(x1[2],i)-max(x0[2],j))*(min(y1[2],k)-max(y0[2],l));
        p+=2*(min(x1[2],i)-max(x0[2],j)+min(y1[2],k)-max(y0[2],l));
    }
    printf("%lld%c%lld",a,' ',p);
    return 0;
}