Cod sursa(job #1813359)

Utilizator zhm248Mustatea Radu zhm248 Data 22 noiembrie 2016 21:37:58
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include<cstdio>
using namespace std;
int minim(int a,int b)
{
    if(a<=b)
        return a;
    return b;
}

int maxim(int a,int b)
{
    if(a>=b)
        return a;
    return b;
}

int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    int x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8,x9,y9,x10,y10,x11,y11,x12,y12,x13,y13,x14,y14;
    long long p=0,a=0;
    scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4,&x5,&y5,&x6,&y6);
    p+=((1LL*2*(x2-x1))+(1LL*2*(y2-y1)));
    p+=((1LL*2*(x4-x3))+(1LL*2*(y4-y3)));
    p+=((1LL*2*(x6-x5))+(1LL*2*(y6-y5)));
    a+=(1LL*1*(x2-x1)*(y2-y1));
    a+=(1LL*1*(x4-x3)*(y4-y3));
    a+=(1LL*1*(x6-x5)*(y6-y5));
    x7=maxim(x1,x3);
    y7=maxim(y1,y3);
    x8=minim(x2,x4);
    y8=minim(y2,y4);
    if(x8>=x7&&y8>=y7)
    {
        a-=(1LL*1*(x8-x7)*(y8-y7));
        p-=((1LL*2*(x8-x7))+(1LL*2*(y8-y7)));
    }
    x9=maxim(x1,x5);
    y9=maxim(y1,y5);
    x10=minim(x2,x6);
    y10=minim(y2,y6);
    if(x10>=x9&&y10>=y9)
    {
        a-=(1LL*1*(x10-x9)*(y10-y9));
        p-=((1LL*2*(x10-x9))+(1LL*2*(y10-y9)));
    }
    x11=maxim(x3,x5);
    y11=maxim(y3,y5);
    x12=minim(x4,x6);
    y12=minim(y4,y6);
    if(x12>=x11&&y12>=y11)
    {
        a-=(1LL*1*(x12-x11)*(y12-y11));
        p-=((1LL*2*(x12-x11))+(1LL*2*(y12-y11)));
    }
    x13=maxim(x7,x9);
    y13=maxim(y7,y9);
    x14=minim(x8,x10);
    y14=minim(y8,y10);
    if(x14>=x13&&y14>=y13)
    {
        a+=(1LL*1*(x14-x13)*(y14-y13));
        p+=((1LL*2*(x14-x13))+(1LL*2*(y14-y13)));
    }
    printf("%lld %lld\n",a,p);
    return 0;
}