Cod sursa(job #1369031)

Utilizator andru47Stefanescu Andru andru47 Data 2 martie 2015 21:15:01
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int a[10][10],A[10][10],N,i,j;
long long x1,x2,x3,y11,y21,y31,X1,X2,X3,Y1,Y2,Y3;
void intersectie(int ind,int ind2)
{
    ++N;
    A[N][1]=max(a[ind][1],a[ind2][1]);
    A[N][2]=max(a[ind][2],a[ind2][2]);
    A[N][3]=min(a[ind][3],a[ind2][3]);
    A[N][4]=min(a[ind][4],a[ind2][4]);
    if (A[N][1]>A[N][3]||A[N][2]>A[N][4])
    {
        A[N][1]=A[N][2]=A[N][3]=A[N][4]=0;
    }
    return ;
}
long long arie(int ind,int a[10][10])
{
    return 1LL*((a[ind][3]-a[ind][1])*(a[ind][4]-a[ind][2]));
}
long long perimetru(int ind,int a[10][10])
{
    return 2LL*((a[ind][3]-a[ind][1])+(a[ind][4]-a[ind][2]));
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    for (i=1; i<=3; i++)
        for (j=1; j<=4; j++)
            scanf("%d ",&a[i][j]);
    intersectie(1,2);
    intersectie(1,3);
    intersectie(2,3);
    x1=arie(1,a);
    x2=arie(2,a);
    x3=arie(3,a);
    y11=arie(1,A);
    y21=arie(2,A);
    y31=arie(3,A);
    X1=perimetru(1,a);
    X2=perimetru(2,a);
    X3=perimetru(3,a);
    Y1=perimetru(1,A);
    Y2=perimetru(2,A);
    Y3=perimetru(3,A);
    printf("%lld %lld",x1+x2+x3-y11-y21,X1+X2+X3-Y1-Y2);
    return 0;
}