Cod sursa(job #709070)

Utilizator Marius96Marius Gavrilescu Marius96 Data 7 martie 2012 17:23:24
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
int x1[8],y1[8],x2[8],y2[8];
inline int min (int a,int b){return a<b?a:b;}
inline int max (int a,int b){return a>b?a:b;}
int area (int x)
{
	return (x2[x]-x1[x])*(y2[x]-y1[x]);
}
void intdr (int x,int y)
{
	x1[x|y]=max (x1[x],x1[y]);
	x2[x|y]=min (x2[x],x2[y]);
	y1[x|y]=max (y1[x],y1[y]);
	y2[x|y]=min (y2[x],y2[y]);
	if(x1[x|y]>=x2[x|y]||y2[x|y]<=y1[x|y])
		x1[x|y]=x2[x|y]=y1[x|y]=y2[x|y];
}
int peri (int x)
{
	return (x2[x]-x1[x]+y2[x]-y2[x])*2*2;
}
int main()
{
	freopen ("reuniune.in","r",stdin);
	freopen ("reuniune.out","w",stdout);
	for(int i=1;i<=4;i<<=1)
		scanf ("%d%d%d%d",&x1[i],&y1[i],&x2[i],&y2[i]);
	intdr (1,2);
	intdr (1,4);
	intdr (2,4);
	intdr (1,6);
	printf ("%d ",area (1)+area (2)+area (4)-area (3)-area (5)-area (6)+area (7));
	printf ("%d" ,peri (1)+peri (2)+peri (4)-peri (3)-peri (5)-peri (6)+peri (7));
	return 0;
}