Cod sursa(job #729600)

Utilizator PatrikStepan Patrik Patrik Data 29 martie 2012 19:11:26
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
	#include<stdio.h>
	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)
	{
		d1=max(x1,x3);
		d2=min(x2,x4);
		d3=max(y1,y3);
		d4=min(y2,y4);
		if(d2 <= d1 || d4 <= d3)
			d1=d2=d3=d4=0;
	}
	
	int main()
	{
		citire();
		solve();
		tipar();
		return 0;
	}
	
	void citire()
	{
		f=fopen("reuniune.in" , "r" );
		fscanf(f , "%ld%ld%ld%ld%ld%ld%ld%ld%ld%ld%ld%ld",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4,&x5,&y5,&x6,&y6 );
		fclose(f);
	}
	
	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)
	{
		if(x1==x2)
			return y2-y1;
		else
			if(y1==y2)
				return x2-x1;
			else
				return 2*((x2-x1)+(y2-y1));
	}
	
	void tipar()
	{
		g=fopen("reuniune.out" , "w" );
		fprintf(g , "%lld " , A);
		fprintf(g , "%lld" , P);
		fclose(g);
	}