Pagini recente » Cod sursa (job #2059892) | Arhiva de probleme | Cod sursa (job #2703845) | Cod sursa (job #2000106) | Cod sursa (job #863691)
Cod sursa(job #863691)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include<cstring>
using namespace std;
struct punct
{
int x,y;
};
struct dr
{
punct a,b,c,d;
} d1,d2,d3,d4,d5,d6,d7;
dr intersectie(dr k,dr l)
{
dr inters;
inters.a.x=max(k.a.x,l.a.x);
inters.d.x=inters.a.x;
inters.b.x=min(k.b.x,l.b.x);
inters.c.x=inters.b.x;
inters.a.y=max(k.a.y,l.a.y);
inters.b.y=inters.a.y;
inters.c.y=min(k.c.y,l.c.y);
inters.d.y=inters.c.y;
if(inters.a.x>inters.c.x||inters.a.y>inters.c.y)
{
inters.a.x=0;
inters.a.y=0;
inters.b.x=0;
inters.b.y=0;
inters.c.x=0;
inters.c.y=0;
inters.d.x=0;
inters.d.y=0;
}
return inters;
}
long long arie(dr d)
{
long long l,L;
l=abs((long long)d.d.y-d.a.y);
L=abs((long long)d.b.x-d.a.x);
return L*l;
}
long long per(dr d)
{
long long l,L;
l=abs((long long)d.d.y-d.a.y);
L=abs((long long)d.b.x-d.a.x);
return (L+l)*2;
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
scanf("%d%d%d%d",&d1.a.x,&d1.a.y,&d1.c.x,&d1.c.y);
d1.d.x=d1.a.x;
d1.d.y=d1.c.y;
d1.b.x=d1.c.x;
d1.b.y=d1.a.y;
scanf("%d%d%d%d",&d2.a.x,&d2.a.y,&d2.c.x,&d2.c.y);
d2.d.x=d2.a.x;
d2.d.y=d2.c.y;
d2.b.x=d2.c.x;
d2.b.y=d2.a.y;
scanf("%d%d%d%d",&d3.a.x,&d3.a.y,&d3.c.x,&d3.c.y);
d3.d.x=d3.a.x;
d3.d.y=d3.c.y;
d3.b.x=d3.c.x;
d3.b.y=d3.a.y;
d4=intersectie(d1,d2);
d5=intersectie(d2,d3);
d6=intersectie(d1,d3);
d7=intersectie(d4,d5);
d7=intersectie(d7,d6);
long long A=arie(d1)+arie(d2)+arie(d3)-arie(d4)-arie(d5)-arie(d6)+arie(d7);
long long P=per(d1)+per(d2)+per(d3)-per(d4)-per(d5)-per(d6)+per(d7);
printf("%lld ",A);
printf("%lld ",P);
return 0;
}