Pagini recente » Cod sursa (job #1031312) | Monitorul de evaluare | Cod sursa (job #529819)
Cod sursa(job #529819)
#include<cstdio>
using namespace std;
struct drept
{
long long x1,y1,x2,y2;
};
long long arie(drept x)
{
return (x.x2-x.x1)*(x.y2-x.y1);
}
long long perimetru(drept x)
{
return 2*(x.x2-x.x1)+2*(x.y2-x.y1);
}
long long max(long long x,long long y)
{
if(x<y)
return y;
return x;
}
long long min(long long x,long long y)
{
if(x>y)
return y;
return x;
}
drept intersectie(drept x,drept y)
{
drept i;
i.x1=max(x.x1,y.x1);
i.y1=max(x.y1,y.y1);
i.x2=min(x.x2,y.x2);
i.y2=min(x.y2,y.y2);
if(i.x1>i.x2 || i.y1>i.y2)
i.x1=i.x2=i.y1=i.y2=0;
return i;
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
drept a,b,c;
scanf("%lld%lld%lld%lld",&a.x1,&a.y1,&a.x2,&a.y2);
scanf("%lld%lld%lld%lld",&b.x1,&b.y1,&b.x2,&b.y2);
scanf("%lld%lld%lld%lld",&c.x1,&c.y1,&c.x2,&c.y2);
printf("%lld",arie(a)+arie(b)+arie(c)-arie(intersectie(a,b))-arie(intersectie(b,c))-arie(intersectie(a,c))+arie(intersectie(intersectie(b,c),a)));
printf(" ");
printf("%lld",perimetru(a)+perimetru(b)+perimetru(c)-perimetru(intersectie(a,b))-perimetru(intersectie(b,c))-perimetru(intersectie(a,c))+perimetru(intersectie(intersectie(b,c),a)));
return 0;
}