Cod sursa(job #484537)

Utilizator loginLogin Iustin Anca login Data 14 septembrie 2010 19:15:39
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
# include <fstream>
# define min Min
# define max maX
using namespace std;
struct dr{
	long long int x1, x2, y1, y2;
} a, b, c;
long long int A, P;

long long int min (int x, int y)
{
	if (x<y)return x;
	return y;
}

long long int max (long long int x, long long int y)
{
	if (x>y)return x;
	return y;
}

dr inter (dr a, dr b)
{
	dr c;
	c.x1=max(a.x1,b.x1);
	c.y1=max(a.y1,b.y1);
	c.x2=min(a.x2,b.x2);
	c.y2=min(a.y2,b.y2);
	if (c.x1>c.x2 || c.y1>c.y2)
		c.x1=c.x2=c.y1=c.y2=0;
	return c;
}

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

long long int peri (dr a)
{
	return 2*(a.x2-a.x1+a.y2-a.y1);
}

int main ()
{
	ifstream fin ("reuniune.in");
	ofstream fout ("reuniune.out");
	fin>>a.x1>>a.y1>>a.x2>>a.y2;
	fin>>b.x1>>b.y1>>b.x2>>b.y2;
	fin>>c.x1>>c.y1>>c.x2>>c.y2;
	
	A=arie(a)+arie(b)+arie(c)-arie(inter(a, b))-arie(inter(a, c))-arie(inter(b, c))+arie(inter(inter(a, b), c));
	P=peri(a)+peri(b)+peri(c)-peri(inter(a, b))-peri(inter(a, c))-peri(inter(b, c))+peri(inter(inter(a, b), c));
	
	fout<<A<<" "<<P;
	
	return 0;
}