Pagini recente » Cod sursa (job #2235861) | Cod sursa (job #2756447) | Cod sursa (job #2237844) | onis-2016/solutii-runda-1 | Cod sursa (job #379852)
Cod sursa(job #379852)
#include<stdio.h>
struct punct
{
long long x,y;
};
struct dreptunghi
{
punct ss,dj;
} a[4],drpt12,drpt23,drpt13,drpt123;
long long max (long long a,long long b)
{
if(a<b)
return b;
return a;
}
long long min (long long a,long long b)
{
if(a>b)
return b;
return a;
}
int intersect (dreptunghi r1,dreptunghi r2)
{
return r1.dj.x>=r2.ss.x && r1.ss.x<=r2.dj.x && r1.dj.y<=r2.ss.y && r1.ss.y>=r2.dj.y;
}
punct stanga_sus (dreptunghi r1,dreptunghi r2)
{
punct A;
A.x=intersect(r1,r2)*max(r1.ss.x,r2.ss.x);
A.y=intersect(r1,r2)*min(r1.ss.y,r2.ss.y);
return A;
}
punct dreapta_jos (dreptunghi r1,dreptunghi r2)
{
punct A;
A.x=intersect(r1,r2)*min(r1.dj.x,r2.dj.x);
A.y=intersect(r1,r2)*max(r1.dj.y,r2.dj.y);
return A;
}
long long Aria (dreptunghi A)
{
return (A.ss.x-A.dj.x)*(A.ss.y-A.dj.y);
}
long long perim (dreptunghi A)
{
return 2*(A.ss.x-A.dj.x+A.ss.y-A.dj.y);
}
int main ()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
for(int i=1;i<=3;++i)
scanf("%lld%lld%lld%lld",&a[i].ss.x,&a[i].dj.y,&a[i].dj.x,&a[i].ss.y);
drpt12.ss=stanga_sus(a[1],a[2]);
drpt12.dj=dreapta_jos(a[1],a[2]);
drpt23.ss=stanga_sus(a[2],a[3]);
drpt23.dj=dreapta_jos(a[2],a[3]);
drpt13.ss=stanga_sus(a[1],a[3]);
drpt13.dj=dreapta_jos(a[1],a[3]);
drpt123.ss=stanga_sus(a[1],drpt23);
drpt123.dj=dreapta_jos(a[1],drpt23);
printf("%lld %lld",Aria(a[1])+Aria(a[2])+Aria(a[3])-Aria(drpt12)-Aria(drpt23)-Aria(drpt13)+Aria(drpt123),perim(a[1])+perim(a[2])+perim(a[3])-perim(drpt12)-perim(drpt23)-perim(drpt13)+perim(drpt123));
return 0;
}