Pagini recente » Cod sursa (job #222547) | Cod sursa (job #1529035) | Cod sursa (job #1620861) | Cod sursa (job #498800) | Cod sursa (job #1343728)
#include<cstdio>
#include<algorithm>
struct drept{long long x,y,x1,y1;};
drept v[3];
drept reuniune(drept a,drept b)
{
drept r;
r.x=r.x1=r.y=r.y1=0;
if(b.x>a.x1 | a.x>b.x1 | a.y>b.y1 | b.y>a.y1)
return r;
r.x=std::max(a.x,b.x);
r.y=std::max(a.y,b.y);
r.x1=std::min(a.x1,b.x1);
r.y1=std::min(a.y1,b.y1);
return r;
}
long long perimetru(drept a)
{
return (a.x1-a.x)*2+(a.y1-a.y)*2;
}
long long aria(drept a)
{
return (a.x1-a.x)*(a.y1-a.y);
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
for(long long i=0;i<3;i++)
scanf("%lld %lld %lld %lld ",&v[i].x,&v[i].y,&v[i].x1,&v[i].y1);
drept r1,r2,r3,r;
r1=reuniune(v[0],v[1]);
r2=reuniune(v[0],v[2]);
r3=reuniune(v[1],v[2]);
r=reuniune(r1,v[2]);
printf("%lld ",aria(v[0])+aria(v[1])+aria(v[2])-aria(r1)-aria(r2)-aria(r3)+aria(r));
printf("%lld ",perimetru(v[0])+perimetru(v[1])+perimetru(v[2])-perimetru(r1)-perimetru(r2)-perimetru(r3)+perimetru(r));
return 0;
}