Cod sursa(job #122714)

Utilizator wefgefAndrei Grigorean wefgef Data 13 ianuarie 2008 15:44:19
Problema Inundatii Scor Ascuns
Compilator cpp Status done
Runda Marime 0.91 kb
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;

const int Nmax = 50005;

int N;
int X[Nmax], Y[Nmax], Z[Nmax];
long long ret;

void ReadData() {
	freopen("inundatii.in", "r", stdin);
	freopen("inundatii.out", "w", stdout);
	
	scanf("%d", &N);
	assert(1 <= N && N <= 50000);
	for (int i = 0; i < N; ++i) {
		assert(scanf("%d %d %d", X+i, Y+i, Z+i) == 3);
		assert(0 <= X[i] && X[i] <= 100000000);
		assert(0 <= Y[i] && Y[i] <= 100000000);
		assert(0 <= Z[i] && Z[i] <= 100000000);
		if (i) {
			assert(X[i] < X[i-1]);
			assert(Y[i] < Y[i-1]);
			assert(Z[i] < Z[i-1]);
		}
	}
}

void Solve(int A[]) {
	int mij = N/2;
	for (int i = 0; i < N; ++i)
		ret += (long long)(i > mij ? A[mij] - A[i] + i-mij : A[i] - A[mij] + mij-i);
}

int main() {
	ReadData();
	Solve(X);
	Solve(Y);
	Solve(Z);
	sort(X, X+N);
	sort(Y, Y+N);
	sort(Z, Z+N);
	printf("%lld\n", ret);
}