Cod sursa(job #125592)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 20 ianuarie 2008 15:03:52
Problema Inundatii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.15 kb
#include <stdio.h>

long n, contor;

typedef struct 
{
	long x, y, z;
}  casa;
casa v[50001];

long modul(long x)
{
	if (x >= 0) return x;
	else return -x;
}

int main()
{
	freopen("inundatii.in","r",stdin);
	freopen("inundatii.out","w",stdout);
	
	scanf("%ld",&n);
	int i, j;
	casa aux1, aux2;

	for (i = 1; i <= n; i++) scanf ("%ld %ld %ld",&v[i].x, &v[i].y, &v[i].z);

	if (n % 2)
	{
		i = n / 2 - 1;
		j = n / 2 + 1;

		aux1.x = v[i + 1].x - 1;
		aux1.y = v[i + 1].y - 1;
		aux1.z = v[i + 1].z - 1;

		aux2.x = aux1.x + 1;
		aux2.y = aux1.y + 1;
		aux2.z = aux1.z + 1;

		contor += modul(aux1.x - v[j].x) + modul(aux1.y - v[j].y) + modul(aux1.z - v[j].z);
		contor += modul(aux2.x - v[i].x) + modul(aux2.y - v[i].y) + modul(aux2.z - v[i].z);
		v[i] = aux1;
		v[j] = aux2;
		i--; j++;

		while (i > 0 && j <= n)
		{

			aux1.x = v[i + 1].x - 1;
			aux1.y = v[i + 1].y - 1;
			aux1.z = v[i + 1].z - 1;
			aux2.x = v[j - 1].x + 1;
			aux2.y = v[j - 1].y + 1;
			aux2.z = v[j - 1].z + 1;

			contor += modul(aux1.x - v[j].x) + modul(aux1.y - v[j].y) + modul(aux1.z - v[j].z);
			contor += modul(aux2.x - v[i].x) + modul(aux2.y - v[i].y) + modul(aux2.z - v[i].z);
			v[i] = aux1;
			v[j] = aux2;
			i--; j++;
		}

	}
	else
	{
		i = n / 2;
		j = n / 2 + 1;

		aux1.x = v[i + 1].x - 1;
		aux1.y = v[i + 1].y - 1;
		aux1.z = v[i + 1].z - 1;

		aux2.x = aux1.x + 1;
		aux2.y = aux1.y + 1;
		aux2.z = aux1.z + 1;

		contor += modul(aux1.x - v[j].x) + modul(aux1.y - v[j].y) + modul(aux1.z - v[j].z);
		contor += modul(aux2.x - v[i].x) + modul(aux2.y - v[i].y) + modul(aux2.z - v[i].z);
		v[i] = aux1;
		v[j] = aux2;
		i--; j++;

		while (i > 0 && j <= n)
		{

			aux1.x = v[i + 1].x - 1;
			aux1.y = v[i + 1].y - 1;
			aux1.z = v[i + 1].z - 1;
			aux2.x = v[j - 1].x + 1;
			aux2.y = v[j - 1].y + 1;
			aux2.z = v[j - 1].z + 1;

			contor += modul(aux1.x - v[j].x) + modul(aux1.y - v[j].y) + modul(aux1.z - v[j].z);
			contor += modul(aux2.x - v[i].x) + modul(aux2.y - v[i].y) + modul(aux2.z - v[i].z);
			v[i] = aux1;
			v[j] = aux2;
			i--; j++;
		}
	}

	printf("%ld\n",contor);
	return 0;
}