Cod sursa(job #1432682)

Utilizator andreinichitaTirziu Nichita andreinichita Data 9 mai 2015 13:59:32
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.71 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct POINT
{
    int x,y;
};
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    POINT P1[4],P2[4],I[9];
    long long a1,a2,a3,a4,a5,a6,a7,a,p,p1,p2,p3,p4,p5,p6,p7;
    scanf("%d%d%d%d",&P1[1].x,&P1[1].y,&P2[1].x,&P2[1].y);
    scanf("%d%d%d%d",&P1[2].x,&P1[2].y,&P2[2].x,&P2[2].y);
    scanf("%d%d%d%d",&P1[3].x,&P1[3].y,&P2[3].x,&P2[3].y);
    I[1].x=max(P1[2].x,P1[1].x);
    I[1].y=max(P1[1].y,P1[2].y);
    I[2].x=min(P2[1].x,P2[2].x);
    I[2].y=min(P2[2].y,P2[1].y);
    I[3].x=max(P1[3].x,P1[2].x);
    I[3].y=max(P1[3].y,P1[2].y);
    I[4].x=min(P2[2].x,P2[3].x);
    I[4].y=min(P2[2].y,P2[3].y);
    I[5].x=max(P1[3].x,P1[1].x);
    I[5].y=max(P1[3].y,P1[1].y);
    I[6].x=min(P2[1].x,P2[3].x);
    I[6].y=min(P2[1].y,P2[3].y);
    I[7].x=max(max(I[1].x,I[3].x),I[5].x);
    I[7].y=max(max(I[1].y,I[3].y),I[5].y);
    I[8].x=min(min(I[2].x,I[4].x),I[6].x);
    I[8].y=min(min(I[2].y,I[4].y),I[6].y);
    a1=(P2[1].y-P1[1].y)*(P2[1].x-P1[1].x);
    a2=(P2[2].y-P1[2].y)*(P2[2].x-P1[2].x);
    a3=(P2[3].y-P1[3].y)*(P2[3].x-P1[3].x);
    a4=(I[2].x-I[1].x)*(I[2].y-I[1].y);
    a5=(I[4].x-I[3].x)*(I[4].y-I[3].y);
    a6=(I[6].x-I[5].x)*(I[6].y-I[5].y);
    a7=(I[8].x-I[7].x)*(I[8].y-I[7].y);
    a=a1+a2+a3-a4-a5-a6+a7;
    p1=2*(P2[1].y-P1[1].y+P2[1].x-P1[1].x);
    p2=2*(P2[2].y-P1[2].y+P2[2].x-P1[2].x);
    p3=2*(P2[3].y-P1[3].y+P2[3].x-P1[3].x);
    p4=2*(I[2].y-I[1].y+I[2].x-I[1].x);
    p5=2*(I[4].y-I[3].y+I[4].x-I[3].x);
    p6=2*(I[6].y-I[5].y+I[6].x-I[5].x);
    p7=2*(I[8].y-I[7].y+I[8].x-I[7].x);
    p=p1+p2+p3-p4-p5-p6+p7;
    printf("%lld %lld",a,p);
    return 0;
}