Cod sursa(job #1147603)

Utilizator gapdanPopescu George gapdan Data 19 martie 2014 23:07:02
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<cstdio>
#include<iostream>
using namespace std;
struct dreptunghi
{
    long long x1,y1,x2,y2;
}d1,d2,d3;
dreptunghi s1,s2,s3,s4;
dreptunghi inter(dreptunghi a,dreptunghi b)
{
    dreptunghi aux;
    aux.x1=max(a.x1,b.x1);
    aux.y1=max(a.y1,b.y1);
    aux.x2=min(a.x2,b.x2);
    aux.y2=min(a.y2,b.y2);
    if(aux.x1>aux.x2||aux.y1>aux.y2)
        aux.x1=aux.x2=aux.y1=aux.y2=0;
    return aux;
}
long long arie(dreptunghi a)
{
    long long aux;
    aux=(a.x2-a.x1)*(a.y2-a.y1);
    if(aux<0) aux=0;
    return aux;
}
long long per(dreptunghi a)
{
    long long aux;
    aux=(a.x2-a.x1)*2+(a.y2-a.y1)*2;
    if(aux<0)
        aux=0;
    return aux;
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    scanf("%lld%lld%lld%lld",&d1.x1,&d1.y1,&d1.x2,&d1.y2);
    scanf("%lld%lld%lld%lld",&d2.x1,&d2.y1,&d2.x2,&d2.y2);
    scanf("%lld%lld%lld%lld",&d3.x1,&d3.y1,&d3.x2,&d3.y2);
    s1=inter(d1,d2);
    s2=inter(d1,d3);
    s3=inter(d2,d3);
    s4=inter(s1,s2);
    long long aria=arie(d1)+arie(d2)+arie(d3)-arie(s1)-arie(s2)-arie(s3)+arie(s4);
    long long p=per(d1)+per(d2)+per(d3)-per(s1)-per(s2)-per(s3)+per(s4);
    printf("%lld %lld\n",aria,p);
    return 0;
}