Cod sursa(job #467396)

Utilizator funkydvdIancu David Traian funkydvd Data 28 iunie 2010 17:34:27
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
using namespace std;
ifstream f1("reuniune.in");
ofstream f2("reuniune.out");
int max3(int a, int b,int c)
{
	return max(a,max(b,c));
}
int min3(int a, int b, int c)
{
	return min(a,min(b,c));
}
int main()
{
	long long x0[3], x1[3], y0[3], y1[3],i,j;
	for(i=0;i<3;i++)
		f1>>x0[i]>>y0[i]>>x1[i]>>y1[i];
	long long A=0, P=0;
	for(i=0;i<3;i++)
	{
		A+=((x1[i]-x0[i])*(y1[i]-y0[i]));
		P+=(2*(x1[i]-x0[i])+2*(y1[i]-y0[i]));
	}
	long long xs,yj,xd,ys;
	for(i=0;i<2;i++)
	  for(j=i+1;j<3;j++)
		{
			xs=max(x0[i],x0[j]);
			xd=min(x1[i],x1[j]);
			yj=max(y0[i],y0[j]);
			ys=min(y1[i],y1[j]);
			if(xs<=xd&&yj<=ys)
			{
				A-=((xd-xs)*(ys-yj));
				P-=(2*(xd-xs)+2*(ys-yj));
			}
		}
	xs=max3(x0[0],x0[1],x0[2]);
	xd=min3(x1[0],x1[1],x1[2]);
	yj=max3(y0[0],y0[1],y0[2]);
	ys=min3(y1[0],y1[1],y1[2]);
	if(xs<=xd&&yj<=ys)
	{
		A+=((xd-xs)*(ys-yj));
		P+=(2*(xd-xs)+2*(ys-yj));
	}
	f2<<A<<' '<<P<<'\n';
	return 0;
}