Cod sursa(job #1368708)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 2 martie 2015 19:33:06
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
# include <cstdio>
# include <algorithm>

using namespace std;

long long s1,s2,s3,s12,s23,s13,s123;
int a[10][10],i,j;

long long arie()
{
    s1 = (a[1][3] - a[1][1]) * (a[1][4] - a[1][2]);
    s2 = (a[2][3] - a[2][1]) * (a[2][4] - a[2][2]);
    s3 = (a[3][3] - a[3][1]) * (a[3][4] - a[3][2]);

    s12 = (min (a[1][4], a[2][4]) - max (a[1][2], a[2][2])) * (min (a[1][3], a[2][3]) - max (a[1][1], a[2][1]));
    s23 = (min (a[3][4], a[2][4]) - max (a[3][2], a[2][2])) * (min (a[3][3], a[2][3]) - max (a[3][1], a[2][1]));
    s13 = (min (a[1][4], a[3][4]) - max (a[1][2], a[3][2])) * (min (a[1][3], a[3][3]) - max (a[1][1], a[3][1]));

    s123 = (min (min (a[1][4], a[2][4]), a[3][4]) - max (max (a[1][2], a[2][2]), a[3][2])) * (min (min (a[1][3], a[2][3]), a[3][3]) - max (max (a[1][1], a[2][1]), a[3][1]));

    return ( s1 + s2 + s3 - s12 - s23 - s13 + s123 );
}


long long perimetru ()
{
    s1 = 2 *((a[1][3] - a[1][1]) + (a[1][4] - a[1][2]));
    s2 = 2 *((a[2][3] - a[2][1]) +  (a[2][4] - a[2][2])) ;
    s3 = 2 *((a[3][3] - a[3][1]) + (a[3][4] - a[3][2]));

    s12 = 2 *( (min (a[1][4], a[2][4]) - max (a[1][2], a[2][2])) + (min (a[1][3], a[2][3]) - max (a[1][1], a[2][1])));
    s23 = 2 *( (min (a[3][4], a[2][4]) - max (a[3][2], a[2][2])) + (min (a[3][3], a[2][3]) - max (a[3][1], a[2][1])));
    s13 = 2 *( (min (a[1][4], a[3][4]) - max (a[1][2], a[3][2])) +   (min (a[1][3], a[3][3]) - max (a[1][1], a[3][1])));

    s123 = 2 * ( (min (min (a[1][4], a[2][4]), a[3][4]) - max (max (a[1][2], a[2][2]), a[3][2])) +  (min (min (a[1][3], a[2][3]), a[3][3]) - max (max (a[1][1], a[2][1]), a[3][1])) );

    return ( s1 + s2 + s3 - s12 - s23 - s13 + s123 );
}
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]);

    printf("%lld %lld",arie(),perimetru());
    return 0;
}