Cod sursa(job #2376459)

Utilizator MarutBrabete Marius Stelian Marut Data 8 martie 2019 15:48:15
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.67 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct drept
{
    int x, y, x1, y1;
};
drept v[5];
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    int p1x,p1y,p2x,p2y;
    long long r1,r2,r3,r4,arie1,arie2,arie3;
    scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&v[1].x,&v[1].y,&v[1].x1,&v[1].y1,&v[2].x,&v[2].y,&v[2].x1,&v[2].y1,&v[3].x,&v[3].y,&v[3].x1,&v[3].y1);
    p1x=max(v[1].x,v[2].x);
    p1y=max(v[1].y,v[2].y);
    p2x=min(v[1].x1,v[2].x1);
    p2y=min(v[1].y1,v[2].y1);
    r1=(p2x-p1x)*(p2y-p1y);
    p1x=max(v[1].x,v[3].x);
    p1y=max(v[1].y,v[3].y);
    p2x=min(v[1].x1,v[3].x1);
    p2y=min(v[1].y1,v[3].y1);
    r2=(p2x-p1x)*(p2y-p1y);
    p1x=max(v[2].x,v[3].x);
    p1y=max(v[2].y,v[3].y);
    p2x=min(v[2].x1,v[3].x1);
    p2y=min(v[2].y1,v[3].y1);
    r3=(p2x-p1x)*(p2y-p1y);
    p1x=max(v[1].x,max(v[2].x,v[3].x));
    p1y=max(v[1].y,max(v[2].y,v[3].y));
    p2x=min(v[1].x1,min(v[2].x1,v[3].x1));
    p2y=min(v[1].y1,min(v[2].y1,v[3].y1));
    r4=(p2x-p1x)*(p2y-p1y);
    arie1=(v[1].x1-v[1].x)*(v[1].y1-v[1].y);
    arie2=(v[2].x1-v[2].x)*(v[2].y1-v[2].y);
    arie3=(v[3].x1-v[3].x)*(v[3].y1-v[3].y);
    if(r1<0) r1=0;
    if(r2<0) r2=0;
    if(r3<0) r3=0;
    if(r4<0) r4=0;
    int p1,p2;
    long long perimetru;
    p1=min(v[1].x,min(v[2].x,v[3].x));
    p2=max(v[1].x1,max(v[2].x1,v[3].x1));
    perimetru=1LL*(p2-p1)*2;
    p1=min(v[1].y,min(v[2].y,v[3].y));
    p2=max(v[1].y1,max(v[2].y1,v[3].y1));
    perimetru+=1LL*(p2-p1)*2;
    unsigned long long rezultat;
    rezultat=1ULL*(arie1+arie2+arie3)-r1-r2-r3+r4;
    printf("%llu %lld",rezultat,perimetru);
    return 0;
}