Cod sursa(job #125153)

Utilizator alecmanAchim Ioan Alexandru alecman Data 20 ianuarie 2008 11:43:46
Problema Inundatii Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 1.25 kb
/*
 *
 *
  preONI 2007 - Runda 3 - Inundatii
 *
 *
 */

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

#define INPUT "inundatii.in"
#define OUTPUT "inundatii.out"

FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");

long nrTotal, xTotal, yTotal, zTotal, xMij, yMij, zMij, x[50001], y[50001],z[50001];
long long sumTemp, sumFinal;

void readValues();
void solveFunction();
inline void printResult(long long val){fprintf(fout, "%lld\n", val);}

int main()
{
  readValues();
  solveFunction();
  fclose(fin);
  fclose(fout);
  return 0;
}

void readValues()
{
  fscanf(fin, "%ld", &nrTotal);
  xTotal = 0;
  yTotal = 0;
  zTotal = 0;
  for(long i=1;i<=nrTotal;++i){
    fscanf(fin, "%ld %ld %ld", &x[i], &y[i], &z[i]);
    xTotal += x[i];
    yTotal += y[i];
    zTotal += z[i];
  }
}

void solveFunction()
{
  xMij = xTotal / nrTotal;
  yMij = yTotal / nrTotal;
  zMij = zTotal / nrTotal;
  xMij -= (nrTotal/2 - 1);
  yMij -= (nrTotal/2 - 1);
  zMij -= (nrTotal/2 - 1);
  sumFinal = 0;
  for(long i=1;i<=nrTotal;++i){
    sumTemp = abs(x[i]-xMij);
    sumTemp += abs(y[i]-yMij);
    sumTemp += abs(z[i]-zMij);
    sumFinal += sumTemp;
    ++xMij;
    ++yMij;
    ++zMij;
  }
  printResult(sumFinal);
}