Cod sursa(job #168669)

Utilizator razvi9Jurca Razvan razvi9 Data 31 martie 2008 18:36:56
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<cstdio>
int m(int a,int b)
{
	if(a<b) return a;
	return b;
}
int M(int a,int b)
{
	if(a<b) return b;
	return a;
}
class d
{
public:
	int x1,x2,y1,y2;
	d()
	{
		x1=x2=y1=y2=0;
	}
	int arie()
	{
		return (x2-x1)*(y2-y1);
	}
	int perimetru()
	{
		return 2*(x2-x1+y2-y1);
	}
	d reuniune(d a)
	{
		d b;
		if(x2<a.x1 || a.x2<x1) return b;
		if(y2<a.y1 || a.y2<a.y1) return b;
		b.x1=M(x1,a.x1);
		b.x2=m(x2,b.x2);
		b.y1=M(y1,a.y1);
		b.y2=m(y2,a.y2);
	}
	void read()
	{
		scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
	}
};
int main()
{
	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);
	d a,b,c;
	a.read();
	b.read();
	c.read();
	printf("%d %d",
		a.arie()+b.arie()+c.arie()-a.reuniune(b).arie()-b.reuniune(c).arie()-c.reuniune(a).arie()+a.reuniune(b.reuniune(c)).arie(),
		a.perimetru()+b.perimetru()+c.perimetru()-a.reuniune(b).perimetru()-b.reuniune(c).perimetru()-c.reuniune(a).perimetru()+a.reuniune(b.reuniune(c)).perimetru());
	fclose(stdout);
	return 0;
}