Cod sursa(job #596082)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 15 iunie 2011 19:29:23
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
# include <fstream>
using namespace std;

typedef long long huge;

struct punct
{
	huge ax, ay;
	huge bx, by;
};

ifstream f ("reuniune.in");
ofstream g ("reuniune.out");

punct A, B, C;

punct intersectie (punct A, punct B)
{
	punct C;
	C.ax = max (A.ax, B.ax);
	C.ay = max (A.ay, B.ay);
	C.bx = min (A.bx, B.bx);
	C.by = min (A.by, B.by);
	return C;
}

inline huge arie (punct A)
{
	return (A.bx - A.ax) * (A.by - A.ay);
}

inline huge perimetru (punct A)
{
	return (huge)(2LL * (A.bx - A.ax) + 2LL * (A.by - A.ay));
}

int main ()
{
	f >> A.ax >> A.ay >> A.bx >> A.by;
	f >> B.ax >> B.ay >> B.bx >> B.by;
	f >> C.ax >> C.ay >> C.bx >> C.by;
	
	g << arie (A) + arie (B) + arie (C) 
	- arie (intersectie (A, B)) - arie (intersectie (A, C)) - arie (intersectie (B, C))
	+ arie (intersectie (intersectie (A, B), C));
	
	g << ' ';
	
	g << perimetru (A) + perimetru (B) + perimetru (C) 
	- perimetru (intersectie (A, B)) - perimetru (intersectie (A, C)) - perimetru (intersectie (B, C))
	+ perimetru (intersectie (intersectie (A, B), C));
	
	g.close ();
	return 0;
}