Pagini recente » Cod sursa (job #2977656) | Cod sursa (job #1255377) | Cod sursa (job #2803760) | Cod sursa (job #1708642) | Cod sursa (job #906680)
Cod sursa(job #906680)
#include <stdio.h>
using namespace std;
struct punct
{
long long x;
long long y;
};
struct dreptunghi
{
punct jos;
punct sus;
};
dreptunghi d1,d2,d3,d4,d5,d6,d7;
long long arie(dreptunghi d)
{
return (d.sus.x-d.jos.x)*(d.sus.y-d.jos.y);
}
long long perimetru(dreptunghi d)
{
return (d.sus.x-d.jos.x+d.sus.y-d.jos.y)*2;
}
dreptunghi intersectie(dreptunghi a,dreptunghi b)
{
dreptunghi rasp;
if(a.sus.x<b.jos.x||b.sus.x<a.jos.x)
rasp.sus.x=rasp.jos.x=rasp.sus.y=rasp.jos.y=0;
else
{
if(a.jos.x<b.jos.x)
{
rasp.jos.x=b.jos.x;
}
else
{
rasp.jos.x=a.jos.x;
}
if(a.jos.y<b.jos.y)
{
rasp.jos.y=b.jos.y;
}
else
{
rasp.jos.y=a.jos.y;
}
if(a.sus.x>b.sus.x)
{
rasp.sus.x=b.sus.x;
}
else
{
rasp.sus.x=a.sus.x;
}
if(a.sus.y>b.sus.y)
{
rasp.sus.y=b.sus.y;
}
else
{
rasp.sus.y=a.sus.y;
}
}
return rasp;
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&d1.jos.x,
&d1.jos.y,&d1.sus.x,&d1.sus.y,&d2.jos.x,&d2.jos.y,&d2.sus.x,
&d2.sus.y,&d3.jos.x,&d3.jos.y,&d3.sus.x,&d3.sus.y);
long long s=0,p=0;
d4=intersectie(d1,d2);
d5=intersectie(d1,d3);
d6=intersectie(d2,d3);
d7=intersectie(d1,d6);
s=s+arie(d1)+arie(d2)+arie(d3)+arie(d7)-arie(d4)-arie(d5)-arie(d6);
p=p+perimetru(d1)+perimetru(d2)+perimetru(d3)+perimetru(d7)-perimetru(d4)-perimetru(d5)-perimetru(d6);
printf("%lld %lld",s,p);
return 0;
}