Nu aveti permisiuni pentru a descarca fisierul b.jpg

Cod sursa(job #729605)

Utilizator PatrikStepan Patrik Patrik Data 29 martie 2012 19:14:46
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 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)
	{
		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()
	{
		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)
	{
		return 2*((x2-x1)+(y2-y1));
	}
	
	void tipar()
	{
		g=fopen("reuniune.out" , "w" );
		fprintf(g , "%lld " , A);
		fprintf(g , "%lld" , P);
		fclose(g);
	}