Cod sursa(job #914133)

Utilizator smaraldaSmaranda Dinu smaralda Data 13 martie 2013 21:49:43
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
struct DREPTUNGHI { int x1,y1,x2,y2; };
DREPTUNGHI a,b,c,aux;
DREPTUNGHI intersect(DREPTUNGHI D1, DREPTUNGHI D2)
{
    DREPTUNGHI RES;
    RES.x1=max(D1.x1,D2.x1);
    RES.y1=max(D1.y1,D2.y1);
    RES.x2=min(D1.x2,D2.x2);
    RES.y2=min(D1.y2,D2.y2);
    return RES;
}

long long aria (DREPTUNGHI D)
{
    long long res;
    res=((long long)D.x2-D.x1)*(D.y2-D.y1);
    if(res<0)
        res=0;
    return res;
}

long long perim (DREPTUNGHI D)
{
    long long res;
    res=((long long)D.x2-D.x1)*2+(D.y2-D.y1)*2;
    return res;
}
int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    int t1,t2,t3,t4;
    long long arie,p;
    DREPTUNGHI AC,CB,AB;
    scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
    a.x1=t1; a.y1=t2; a.x2=t3; a.y2=t4;
    scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
    b.x1=t1; b.y1=t2; b.x2=t3; b.y2=t4;
    scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
    c.x1=t1; c.y1=t2; c.x2=t3; c.y2=t4;
    AB=intersect(a,b);
    AC=intersect(a,c);
    CB=intersect(c,b);
    arie=aria(a)+aria(b)+aria(c);
    arie=arie-aria(AB)-aria(AC)-aria(CB)+aria(intersect(AB,AC));
    p=perim(a)+perim(b)+perim(c);
    p=p-perim(AB)-perim(AC)-perim(CB)+perim(intersect(AB,AC));
    printf("%I64d %I64d",arie,p);
    return 0;
}