Cod sursa(job #247775)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 23 ianuarie 2009 22:59:25
Problema Inundatii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
int a[4][50100];
long long sol;
int n;
inline long long ABS(long long x)
{
	if (x<0)
		return -x;
	return x;
}
void solve(int p)
{
	
	int m = a[p][n/2]-n/2;
	long long solt = 0;
	for (int i = 1; i <= n; ++ i)
	{
		solt+=ABS((long long)a[p][i]-(long long)(m+i));
	}
	if (n%2 == 1)
	{
		long long solb = 0;
		m = a[p][(n/2)+1]-(n/2)-1;
		for (int i = 1; i <= n; ++ i)
			solb+=ABS((long long)a[p][i]-(long long)(m+i));
		if (solb < solt)
			sol+=solb;
		else
			sol+=solt;
	}
	else
		sol+=solt;
	
}

		
int main()
{
	freopen("inundatii.in","r",stdin);
	freopen("inundatii.out","w",stdout);
	scanf("%d\n",&n);
	for (int i = 1; i <= n; ++ i)
		scanf("%d %d %d\n", &a[0][i],&a[1][i], &a[2][i]);
	solve(0);
	solve(1);
	solve(2);
	printf("%lld\n",sol);
	return 0;
}