Cod sursa(job #1224083)

Utilizator amina2002Abu Shanab Amina amina2002 Data 29 august 2014 17:09:01
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct drept
{
    int x1,y1,x2,y2;
}d1,d2,d3;
drept intersectie(drept d1,drept d2)
{
    drept di;
    di.x1=max(d1.x1,d2.x1);
    di.y1=max(d2.y1,d1.y1);
    di.x2=min(d1.x2,d2.x2);
    di.y2=min(d2.y2,d1.y2);
    if(di.y1>di.y2 && di.x2>di.x1 || di.y2<di.y1 && di.x2<di.x1)
        {
            di.x1=0;
            di.x2=0;
            di.y1=0;
            di.y2=0;
        }
    return di;
}
long long ar(drept d1)
{
    long long a;
    a=(long long)(d1.x2-d1.x1)*(d1.y2-d1.y1);
    return a;
}
long long p(drept d1)
{
    long long p;
    p=(long long)((d1.x2-d1.x1)+(d1.y2-d1.y1))*2;
    return p;
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    long long arie,per;
    scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&d1.x1,&d1.y1,&d1.x2,&d1.y2,&d2.x1,&d2.y1,&d2.x2,&d2.y2,&d3.x1,&d3.y1,&d3.x2,&d3.y2);
    drept  d12,d13,d23,dt;
    d12=intersectie(d1,d2);
    d13=intersectie(d1,d3);
    d23=intersectie(d2,d3);
    dt=intersectie(d12,d3);
    arie=(long long)(ar(d1)+ar(d2)+ar(d3)-ar(d12)-ar(d13)-ar(d23)+ar(dt));
    per=(long long)(p(d1)+p(d2)+p(d3)-p(d12)-p(d13)-p(d23)+p(dt));
    printf("%I64d %I64d",arie,per);
    return 0;
}