Cod sursa(job #800110)

Utilizator Detrol2kGuianu Leon Detrol2k Data 20 octombrie 2012 18:57:25
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;

struct dreptunghi
{
	long long x1, y1;
	long long x2, y2;
}d1, d2, d3;

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

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

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

	return(aux);
}

int main()
{
	ifstream f("reuniune.in");
	ofstream g("reuniune.out");
	
	long long a, p;
	
	//Read
	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;	
	
	//Compute
	a = arie(d1)+arie(d2)+arie(d3)-arie(reun(d1,d2))
	-arie(reun(d1,d3))-arie(reun(d2,d3))
	+arie(reun(reun(d1,d2),d3));
	p = per(d1)+per(d2)+per(d3)-per(reun(d1,d2))
	-per(reun(d1,d3))-per(reun(d2,d3))
	+per(reun(reun(d1,d2),d3));
		
	//Print
	g<<a<<" "<<p;
}