Cod sursa(job #534859)

Utilizator tudorsTudor Siminic tudors Data 16 februarie 2011 12:57:42
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define L long long 
using namespace std;

typedef struct  {L x1,y1,x2,y2;} dreptunghi;
dreptunghi d1,d2,d3;
L rarie,rperi;
ifstream f("reuniune.in");
ofstream g("reuniune.out");

L arie(dreptunghi a)
{
	return (a.x2-a.x1)*(a.y2-a.y1);
}

dreptunghi reun(dreptunghi a, dreptunghi b)
{
	dreptunghi q;
	q.x1=max(a.x1,b.x1);
	q.y1=max(a.y1,b.y1);
	q.x2=min(a.x2,b.x2);
	q.y2=min(a.y2,b.y2);
	if (q.x1>q.x2 || q.y1>q.y2)
		q.x1=q.x2=q.y1=q.y2=0;
	return q;
}

L per(dreptunghi a)
{
	return 2*(a.x2-a.x1+a.y2-a.y1);
}

int main()
{
	f>>d1.x1>>d1.y1>>d1.x2>>d1.y2;
	f>>d2.x1>>d2.y1>>d2.x2>>d2.y2;
	f>>d3.x1>>d3.y1>>d3.x2>>d3.y2;
	rarie=arie(d1)+arie(d2)+arie(d3)-arie(reun(d1,d2))-arie(reun(d1,d3))-arie(reun(d2,d3))+arie(reun(reun(d1,d2),d3));
	rperi=per(d1)+per(d2)+per(d3)-per(reun(d1,d2))-per(reun(d1,d3))-per(reun(d2,d3))+per(reun(reun(d1,d2),d3));
	g<<rarie<<" "<<rperi;
	f.close();
	g.close();
	return 0;
}