Cod sursa(job #1487201)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 16 septembrie 2015 14:20:18
Problema Reuniune Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
typedef struct { long long x,y; }E;
typedef struct { E c,d; }D;
int i;
long long u,v;
E a[4],b[4];
D r[4],e,f,g,h;
long long A(E v,E w) { return (w.x-v.x)*(v.y-w.y); }
long long P(E v,E w) { return 2*((w.x-v.x)+(v.y-w.y)); }
D I(D b,D c) {
	D a;
	a.c.x=(b.c.x<c.c.x?c.c.x:b.c.x),a.c.y=(b.c.y<c.c.y?b.c.y:c.c.y),a.d.x=(b.d.x<c.d.x?b.d.x:c.d.x),a.d.y=(b.d.y<c.d.y?c.d.y:b.d.y);
	return a;
}
int J(D b,D c) { return b.d.x>=c.c.x&&b.c.x<=c.d.x&&b.d.y<=c.c.y&&b.c.y>=c.d.y; }
int main() {
	freopen("reuniune.in","r",stdin),freopen("reuniune.out","w",stdout);
	for(i=1;i<4;i++)
		scanf("%lld%lld%lld%lld",&a[i].x,&a[i].y,&b[i].x,&b[i].y),r[i].c.x=a[i].x,r[i].c.y=b[i].y,r[i].d.x=b[i].x,r[i].d.y=a[i].y;
        v+=P(r[i].c,r[i].d),u+=A(r[i].c,r[i].d);
	if(J(r[1],r[2]))
        e=I(r[1],r[2]),u-=A(e.c,e.d),v-=P(e.c,e.d);
	if(J(r[1],r[3]))
        f=I(r[1],r[3]),u-=A(f.c,f.d),v-=P(f.c,f.d);
	if(J(r[2],r[3]))
        g=I(r[2],r[3]),u-=A(g.c,g.d),v-=P(g.c,g.d);
	if(J(r[1],r[2])&&J(e,r[3]))
        h=I(e,r[3]),u+=A(h.c,h.d),v+=P(h.c,h.d);
	printf("%lld %lld",u,v);
}