Cod sursa(job #325199)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 19 iunie 2009 15:02:47
Problema Inundatii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define Nmax 50005
#define lld long

long x[Nmax],y[Nmax],z[Nmax]; // date ord descr
long n,i;
lld rez;

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

lld work(long x[Nmax]){
	long i;
   lld med,rez=0,rez2=0;
   for(i=1;i<=n;++i) x[i] -=i;
   med = (n+1)/2;
   for(i=1;i<=n;++i) rez += abs(x[i]-x[med]);
   if(n %2==0){
     for(i=1;i<=n;++i) rez2 += abs(x[i]-x[med+1]);
   if(rez2<rez) return rez2; else return rez;
	}
   return rez;
}

int main(){
	freopen("inundatii.in","r",stdin);
   freopen("inundatii.out","w",stdout);
   scanf("%ld",&n);
   for(i=1;i<=n;++i)
     scanf("%ld%ld%ld",&x[i],&y[i],&z[i]);

   rez+=work(x);
   rez+=work(y);
   rez+=work(z);

   printf("%ld\n",rez);
   fclose(stdin); fclose(stdout);
   return 0;
}