Cod sursa(job #331661)

Utilizator indestructiblecont de teste indestructible Data 14 iulie 2009 21:51:38
Problema Reuniune Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
struct dreptunghi
{
	int a,b,c,d;
};
dreptunghi v[5];
long long arie,perimetru;
long long modul(long long x)
{
	if (x<0)
		return -x;
	return x;
}
int max(int a,int b)
{
	if (a>b)
		return a;
	return b;
}
int min(int a,int b)
{
	if (a<b)
		return a;
	return b;
}
int main()
{
	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);
	int i,crd1,crd2,crd3,crd4;
	for (i=1; i<=3; i++)
	{
		scanf("%d%d%d%d",&v[i].a,&v[i].b,&v[i].c,&v[i].d);
		arie=(long long)arie+(long long)modul(v[i].c-v[i].a)*modul(v[i].d-v[i].b);
		perimetru=(long long)perimetru+((long long)modul(v[i].c-v[i].a)+modul(v[i].d-v[i].b))*2;
	}
	for (i=2; i<=3; i++)
	{
		crd1=v[i].a;
		crd2=max(v[i].b,v[1].b);
		crd3=min(v[i].c,v[1].c);
		crd4=min(v[i].d,v[1].d);
		arie=(long long)arie-(long long)modul(crd3-crd1)*modul(crd4-crd2);
		perimetru=(long long)perimetru-((long long)modul(crd3-crd1)+modul(crd4-crd2))*2;
	}
	printf("%lld ",arie);
	printf("%lld\n",perimetru);
	return 0;
}