Cod sursa(job #729684)

Utilizator PatrikStepan Patrik Patrik Data 29 martie 2012 20:00:39
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
	#include<fstream>
	using namespace std;
	FILE *f , *g ;
	typedef long long LL;
	typedef long L ;
	L x1 , x2 , x3 , x4 , x5 , x6 , y1 , y2 , y3 , y4 , y5 , y6 ;
	LL d1 , d2 , d3 , d4 , A , P;
	
	void citire();
	void solve();
	void tipar();
	LL arie(LL x1 , LL x2 , LL y1 , LL y2);
	LL perim(LL x1 ,  LL x2 , LL y1 , LL y2);
	LL min(LL a , LL b ){return a<b?a:b ;}
	LL max(LL a , LL b){return a>b?a:b; }
	
	void inter(LL x1 , LL x2 , LL y1, LL y2 , LL x3 , LL x4 , LL y3 , LL y4)
	{
		LL a , b , c , d;
		a=max(x1,x3);
		b=min(x2,x4);
		c=max(y1,y3);
		d=min(y2,y4);
		if(b <= a || d <= c)
			a=b=c=d=0;
		d1=a,d2=b,d3=c,d4=d;
	}
	
	int main()
	{
		citire();
		solve();
		tipar();
		return 0;
	}
	
	void citire()
	{
		ifstream f("reuniune.in");
		f>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6;
		f.close();
	}
	
	void solve()
	{
		A+=arie(x1,x2,y1,y2)+arie(x3,x4,y3,y4)+arie(x5,x6,y5,y6);
		P+=perim(x1,x2,y1,y2)+perim(x3,x4,y3,y4)+perim(x5,x6,y5,y6);
		inter(x1,x2,y1,y2,x3,x4,y3,y4);
		A-=arie(d1,d2,d3,d4);
		P-=perim(d1,d2,d3,d4);
		inter(x1,x2,y1,y2,x5,x6,y5,y6);
		A-=arie(d1,d2,d3,d4);
		P-=perim(d1,d2,d3,d4);
		inter(x3,x4,y3,y4,x5,x6,y5,y6);
		A-=arie(d1,d2,d3,d4);
		P-=perim(d1,d2,d3,d4);
		inter(x1,x2,y1,y2,d1,d2,d3,d4);
		A+=arie(d1,d2,d3,d4);
		P+=perim(d1,d2,d3,d4);
	}
	
	LL arie(LL x1 , LL x2 , LL y1 , LL y2)
	{
		return (x2-x1)*(y2-y1);
	}
	
	LL perim(LL x1 ,  LL x2 , LL y1 , LL y2)
	{
		return 2*((x2-x1)+(y2-y1));
	}
	
	void tipar()
	{
		ofstream g("reuniune.out");
		g<<A<<' '<<P;
		g.close();
	}