Cod sursa(job #125125)

Utilizator gcosminGheorghe Cosmin gcosmin Data 20 ianuarie 2008 11:31:38
Problema Inundatii Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 1.36 kb
#include <stdio.h>

#define LL long long

#define NMAX 50010

int N;

int a[NMAX], b[NMAX], c[NMAX];

int ABS(int x) { return (x < 0) ? -x : x; }

LL calc(int a[])
{
	int mij = (N + 1) / 2, vmij = a[mij];
	LL rez = 0;

	for (int i = 1; i <= N; i++) rez += ABS(a[i] - (vmij - (mij - i)));

	return rez;
}

/*
#define VMAX 2000
#define INF 1000000000
int din[1010][VMAX + 10];

inline int MIN(int a, int b) { return (a < b) ? a : b; }

LL calc_brut(int a[])
{
	int i, j, k;

	for (i = 1; i <= N; i++) {
		for (j = 1; j <= VMAX; j++) {
			din[i][j] = INF;
			for (k = 1; k < j; k++) din[i][j] = MIN(din[i][j], ABS(a[i] - j) + din[i-1][k]);
		}
	}

	int rez = INF;
	for (j = 1; j <= VMAX; j++) rez = MIN(rez, din[N][j]);

	return rez;
}
*/
/*
#include <stdlib.h>
int gen(int N)
{
	freopen("inundatii.in", "w", stdout);

	printf("%d\n", N);

	int i, scd;
	int x = 100000, y = 100000, z = 100000;
	for (i = 1; i <= N; i++) {
		scd = rand() % 100 + 1;
		x -= scd; y -= scd; z -= scd;
		printf("%d %d %d\n", x, y, z);
	}

	fclose(stdout);
	return 0;
}
*/
int main()
{
//	srand(13);
//	gen(1001);

	int i;

	freopen("inundatii.in", "r", stdin);
	freopen("inundatii.out", "w", stdout);

	scanf("%d", &N);

	for (i = 1; i <= N; i++) scanf("%d %d %d", &a[i], &b[i], &c[i]);

	printf("%lld\n", calc(a) + calc(b) + calc(c));
//	printf("%lld\n", calc_brut(a) + calc_brut(b) + calc_brut(c));

return 0;
}