Cod sursa(job #343053)

Utilizator radu_cppRadu Voroneanu radu_cpp Data 24 august 2009 19:54:35
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

struct point{
	int x,y;
};

struct drept{
	point a,b;
};

drept a,b,c,d;
int sum,sum2;

void read(drept &a) { 
	scanf("%d %d %d %d",&a.a.x,&a.a.y,&a.b.x,&a.b.y); 
}

int arie(drept d)
{
	if (d.a.x > d.b.x)
		return 0;
	if (d.a.y > d.b.y)
		return 0;
	return (d.b.x-d.a.x) * (d.b.y-d.a.y);
}

int per(drept d)
{
	if (d.a.x > d.b.x) 
		return 0;
	if (d.a.y > d.b.y)
		return 0;
	return 2*(d.b.x - d.a.x + d.b.y - d.a.y);
}

void inters(drept &d, drept a, drept b)
{
	d.a.x = max(a.a.x, b.a.x);
	d.a.y = max(a.a.y, b.a.y);
	d.b.x = min(a.b.x, b.b.x);
	d.b.y = min(a.b.y, b.b.y);
}

int main()
{
	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);
	read(a); read(b); read(c);
	sum=arie(a)+arie(b)+arie(c);
	sum2=per(a)+per(b)+per(c);
	inters(d,a,b); sum-=arie(d); sum2-=per(d);
	inters(d,a,c); sum-=arie(d); sum2-=per(d);
	inters(d,b,c); sum-=arie(d); sum2-=per(d);
	inters(d,d,a); sum+=arie(d); sum2+=per(d);
	printf("%d %d\n",sum,sum2);
	return 0;
}