Cod sursa(job #2376487)

Utilizator Alex_AeleneiAlex Aelenei Ioan Alex_Aelenei Data 8 martie 2019 15:56:58
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <cmath>
#include <cstdio>
#include <iostream>

using namespace std;
int v[15];
void perimetru()
{
    int lmin=INT_MAX,lmax=INT_MIN,dmin=INT_MAX,dmax=INT_MIN;
    for(int i=1;i<=12;i+=2)
    {
        lmin=min(lmin,v[i]);
        lmax=max(lmax,v[i]);
    }
    for(int i=2;i<=12;i+=2)
    {
        dmin=min(dmin,v[i]);
        dmax=max(dmax,v[i]);
    }
    long long ans=abs(lmax-lmin)+abs(dmax-dmin);
    printf("%lld",2*ans);
}
void arie()
{
    long long a1,a2,a3,r12,r13,r23,r123;
    int p1x,p1y,p2x,p2y;
    a1=1LL*abs(v[1]-v[3])*abs(v[2]-v[4]);
    a2=1LL*abs(v[5]-v[7])*abs(v[6]-v[8]);
    a3=1LL*abs(v[9]-v[11])*abs(v[10]-v[12]);
    p1x=max(v[1],v[5]);
    p1y=max(v[2],v[6]);
    p2x=min(v[3],v[7]);
    p2y=min(v[4],v[8]);
    r12=abs(p2x-p1x)*abs(p2y-p1y);
    p1x=max(v[1],v[9]);
    p1y=max(v[2],v[10]);
    p2x=min(v[3],v[11]);
    p2y=min(v[4],v[12]);
    r13=abs(p2x-p1x)*abs(p2y-p1y);
    p1x=max(v[5],v[9]);
    p1y=max(v[6],v[10]);
    p2x=min(v[7],v[11]);
    p2y=min(v[8],v[12]);
    r23=abs(p2x-p1x)*abs(p2y-p1y);
    p1x=max(v[1],max(v[5],v[9]));
    p1y=max(v[2],max(v[6],v[10]));
    p2x=min(v[3],min(v[7],v[11]));
    p2y=min(v[4],min(v[8],v[12]));
    r123=abs(p2x-p1x)*abs(p2y-p1y);
    printf("%llu",1ULL*a1+a2+a3-r12-r13-r23+r123);
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    int n,i;
    for(i=1;i<=12;++i)
        scanf("%d",&v[i]);
    arie();
    printf(" ");
    perimetru();
    return 0;
}