Pagini recente » Cod sursa (job #2205090) | Cod sursa (job #191345) | Cod sursa (job #2761649) | Cod sursa (job #1656949) | Cod sursa (job #379866)
Cod sursa(job #379866)
#include<stdio.h>
struct punct
{
long long x,y;
};
struct dreptunghi
{
punct ss,dj;
} a[4],drpt12,drpt23,drpt13,drpt123;
long long arie,perimetru;
long long mod(long long x)
{
if(x<0)
return x;
return x;
}
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=max(r1.ss.x,r2.ss.x);
A.y=min(r1.ss.y,r2.ss.y);
return A;
}
punct dreapta_jos (dreptunghi r1,dreptunghi r2)
{
punct A;
A.x=min(r1.dj.x,r2.dj.x);
A.y=max(r1.dj.y,r2.dj.y);
return A;
}
long long Aria (dreptunghi A)
{
return (A.dj.x-A.ss.x)*(A.ss.y-A.dj.y);
}
long long perim (dreptunghi A)
{
return 2*(A.dj.x-A.ss.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);
if(intersect(a[1],a[2]))
{
drpt12.ss=stanga_sus(a[1],a[2]);
drpt12.dj=dreapta_jos(a[1],a[2]);
}
if(intersect(a[1],a[2]))
{
drpt23.ss=stanga_sus(a[2],a[3]);
drpt23.dj=dreapta_jos(a[2],a[3]);
}
if(intersect(a[1],a[2]))
{
drpt13.ss=stanga_sus(a[1],a[3]);
drpt13.dj=dreapta_jos(a[1],a[3]);
}
if(intersect(a[1],a[2]))
{
drpt123.ss=stanga_sus(a[1],drpt23);
drpt123.dj=dreapta_jos(a[1],drpt23);
}
arie=Aria(a[1])+Aria(a[2])+Aria(a[3])-Aria(drpt12)-Aria(drpt23)-Aria(drpt13)+Aria(drpt123);
perimetru=perim(a[1])+perim(a[2])+perim(a[3])-perim(drpt12)-perim(drpt23)-perim(drpt13)+perim(drpt123);
printf("%lld %lld",arie,perimetru);
return 0;
}