Cod sursa(job #125977)

Utilizator cos_minBondane Cosmin cos_min Data 20 ianuarie 2008 22:29:45
Problema Inundatii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>
#include <vector>
using namespace std;

#define in "inundatii.in"
#define out "inundatii.out"
#define dim 50001

int N;
int X[dim], Y[dim], Z[dim];

inline int Abs(int A, int B) {
       if ( A < B ) return B - A;
       return A - B;
}

int main()
{
    int Cn1 = 0, Cn2 = 0, Cn3 = 0, Total = 0;
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d", &N);
    for ( int i = 1; i <= N; i++ )
    {
        scanf("%d%d%d", &X[i], &Y[i], &Z[i]);
        Cn1 += X[i], Cn2 += Y[i], Cn3 += Z[i];
    }
    
    
    
    if ( N == 1 )
    {
         printf("0");
         
         return 0;
    }
    
    Cn1 /= N, Cn2 /= N, Cn3 /= N;
    
    Cn1 -= 1;
    Cn2 -= 1; 
    Cn3 -= 1;
    
    //Cn1 = (X[1]+X[N]) / 2;
    //Cn2 = (Y[1]+Y[N]) / 2;
    //Cn3 = (Z[1]+Z[N]) / 2;
    
    for ( int i = 1; i <= N; i++ )
    {
        Total += Abs(X[i],Cn1);
        Total += Abs(Y[i],Cn2);
        Total += Abs(Z[i],Cn3);
        X[i] = Cn1, Y[i] = Cn2, Z[i] = Cn3;      
        ++Cn1, ++Cn2, ++Cn3;
    }
    
   // for ( int i = 1; i <= N; i++ )
   //     printf("%d %d %d\n", X[i], Y[i], Z[i]);
    
    printf("%d", Total);
    
    return 0;
}