Cod sursa(job #125020)

Utilizator ViksenVictor-Nicolae Savu Viksen Data 20 ianuarie 2008 10:58:44
Problema Inundatii Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 0.75 kb
#include <stdio.h>

int X[50000],Y[50000],Z[50000],n;

int abs (int x) { return (x>0)?(x):(-x);}

int Solve ( int* X , int x )
{
    int d = x/n + (int) ( x%n > x>>1 ), r=0 ,i;
    for ( i=0 ; i<n  ; i++ ) r+= abs (X[i]-d);
    return r;
}

int main ()
{
    int i,x=0,y=0,z=0;
    freopen ( "inundatii.in" , "r" , stdin );
    scanf ( "%d" , &n );
    for ( i=0 ; i<n ; i++ )
    {
        scanf ( "%d %d %d" , &X[i] , &Y[i] , &Z[i] );
        X[i]-=i; Y[i]-=i; Z[i]-=i;
        x+=X[i]; y+=Y[i]; z+=Z[i];
    }
    fclose ( stdin );
    
    int r = Solve ( X , x );
    r += Solve ( Y , y );
    r += Solve ( Z , z );

    freopen ( "inundatii.out" , "w" , stdout );
    printf ( "%d\n" , r );
    fclose ( stdout );

    return 0;
}