Cod sursa(job #114404)

Utilizator sims_glAlexandru Simion sims_gl Data 14 decembrie 2007 06:03:02
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.68 kb
#include <stdio.h>

typedef struct rect
{
	long long x1,x2,y1,y2;
};

long long s[8],p[8];
rect a[8];

int main()
{
	int i;

	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);

	for (i=1; i<=3; i++)
		scanf("%lld%lld%lld%lld",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);

	if ((long long)a[1].x1<(long long)a[2].x1)
		a[4].x1=(long long)a[2].x1;
	else
		a[4].x1=(long long)a[1].x1;
	if ((long long)a[1].y1<(long long)a[2].y1)
		a[4].y1=(long long)a[2].y1;
	else
		a[4].y1=(long long)a[1].y1;
	if ((long long)a[1].x2<(long long)a[2].x2)
		a[4].x2=(long long)a[1].x2;
	else
		a[4].x2=(long long)a[2].x2;
	if ((long long)a[1].y2<(long long)a[2].y2)
		a[4].y2=(long long)a[1].y2;
	else
		a[4].y2=(long long)a[2].y2;

	if ((long long)a[1].x1<(long long)a[3].x1)
		a[5].x1=(long long)a[3].x1;
	else
		a[5].x1=(long long)a[1].x1;
	if ((long long)a[1].y1<(long long)a[3].y1)
		a[5].y1=(long long)a[3].y1;
	else
		a[5].y1=(long long)a[1].y1;
	if ((long long)a[1].x2<(long long)a[3].x2)
		a[5].x2=(long long)a[1].x2;
	else
		a[5].x2=(long long)a[3].x2;
	if ((long long)a[1].y2<(long long)a[3].y2)
		a[5].y2=(long long)a[1].y2;
	else
		a[5].y2=(long long)a[3].y2;

	if ((long long)a[3].x1<(long long)a[2].x1)
		a[6].x1=(long long)a[2].x1;
	else
		a[6].x1=(long long)a[3].x1;
	if ((long long)a[3].y1<(long long)a[2].y1)
		a[6].y1=(long long)a[2].y1;
	else
		a[6].y1=(long long)a[3].y1;
	if ((long long)a[3].x2<(long long)a[2].x2)
		a[6].x2=(long long)a[3].x2;
	else
		a[6].x2=(long long)a[2].x2;
	if ((long long)a[3].y2<(long long)a[2].y2)
		a[6].y2=(long long)a[3].y2;
	else
		a[6].y2=(long long)a[2].y2;

	if ((long long)a[3].x1<(long long)a[4].x1)
		a[7].x1=(long long)a[4].x1;
	else
		a[7].x1=(long long)a[3].x1;
	if ((long long)a[3].y1<(long long)a[4].y1)
		a[7].y1=(long long)a[4].y1;
	else
		a[7].y1=(long long)a[3].y1;
	if ((long long)a[3].x2<(long long)a[4].x2)
		a[7].x2=(long long)a[3].x2;
	else
		a[7].x2=(long long)a[4].x2;
	if ((long long)a[3].y2<(long long)a[4].y2)
		a[7].y2=(long long)a[3].y2;
	else
		a[7].y2=(long long)a[4].y2;

	for (i=1; i<=7; i++)
	{
		s[i]=(long long)((long long)a[i].x2-(long long)a[i].x1)*((long long)a[i].y2-(long long)a[i].y1);
		p[i]=(long long)((long long)a[i].x2-a[i].x1+a[i].y2-a[i].y1)*2;
		if ((long long)a[i].x1>(long long)a[i].x2 || (long long)a[i].y1>(long long)a[i].y2)
		{
			p[i]=(long long)0;
			s[i]=(long long)0;
		}
	}

	printf("%lld %lld\n",(long long)s[1]+(long long)s[2]+(long long)s[3]-(long long)s[4]-(long long)s[5]-(long long)s[6]+(long long)s[7],(long long)p[1]+(long long)p[2]+(long long)p[3]-(long long)p[4]-(long long)p[5]-(long long)p[6]+(long long)p[7]);

	return 0;
}