Cod sursa(job #483997)

Utilizator petroMilut Petronela petro Data 11 septembrie 2010 13:33:12
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<fstream>
using namespace std;

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

typedef struct
{
	long long x,y,z,t,l,L;
}Dr;

Dr v[5];
long long a[4],p[4];
int k;

void cit()
{
	int i;
	for(i=1;i<=3;++i)
	{
		f>>v[i].x>>v[i].y>>v[i].z>>v[i].t;
		v[i].l=v[i].t-v[i].y;
		v[i].L=v[i].z-v[i].x;
	}
	
	f.close();
}

long long max(long long x, long long y)
{
	if(x>y) return x;
	return y;
}

long long min(long long x, long long y)
{
	if(x<y) return x;
	return y;
}

void dr2(int i, int j)
{
	a[k]=p[k]=0;
	long long l,L,x,y,z,t;
	x=max(v[i].x,v[j].x);
	y=max(v[i].y,v[j].y);
	z=min(v[i].z,v[j].z);
	t=min(v[i].t,v[j].t);
	if(z>=x &&t>=y) {L=z-x;
					 l=t-y;
				     a[k]=l*L;
					 p[k]=2*(l+L);
					}
}
	
void dr3()
{
	a[k]=p[k]=0;
	long long z,y,z,t;
	x=max(max(v[1].x,v[2].x),v[3].x);
	y=max(max(v[1].y,v[2].y),v[3].y);
	z=min(min(v[1].z,v[2].z),v[3].z);
	t=min(min(v[1].t,v[2].t),v[3].t);
	
	if(z>=x && t>=y) {long long L,l;
					  L=z-x;
					  l=t-y;
					  a[k]=l*L;
					  p[k]=2*(l+L);
					  }
}
		
int main()
{
	cit();
	
	long long A=0,P=0;

	k=1;
	dr2(1,2); 
		
	k=2;
	dr2(1,3);
	
	k=3;
	dr2(2,3);
	
	k=4;
	dr3();
	
	A=v[1].l * v[1].L + v[2].l * v[2].L + v[3].l * v[3].L - a[1]-a[2]-a[3]+a[4];
	P=2*(v[1].l + v[1].L) + 2*(v[2].l + v[2].L) + 2*(v[3].l + v[3].L) -p[1]-p[2]-p[3]+p[4];
	
	g<<A<<" "<<P<<"\n";
	g.close();
	return 0;
}