Cod sursa(job #298649)

Utilizator alecmanAchim Ioan Alexandru alecman Data 6 aprilie 2009 11:49:36
Problema Inundatii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<cstdio>

using namespace std;

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

const long NMAX = 50001;

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

long N;
long X0[ NMAX ], Y0[ NMAX ], Z0[ NMAX ], X1[ NMAX ], Y1[ NMAX ], Z1[ NMAX ];

void readData()
{
  fscanf(fin, "%ld", &N);
  
  for(long i = 1; i <= N; ++i)
    fscanf(fin, "%ld %ld %ld", &X0[ i ], &Y0[ i ], &Z0[ i ]);
}

inline long Abs(long X)
{
  if(X < 0) return -X;
  return X;
}

void solve()
{
  for(long i = 1; i <= N; ++i)
    X0[ i ] -= i, Y0[ i ] -= i, Z0[ i ] -= i;
  
  for(long i = 1; i <= N; ++i)
    X1[ i ] = X0[ N/2 ], Y1[ i ] = Y0[ N/2 ], Z1[ i ] = Z0[ N/2 ];
  
  for(long i = 1; i <= N; ++i)
  {
    X1[ i ] += i, Y1[ i ] += i, Z1[ i ] += i;
    X0[ i ] += i, Y0[ i ] += i, Z0[ i ] += i;
  }
    
  long long Sum = 0;
  
  for(long i = 1; i <= N; ++i)
  {
    Sum += Abs(X1[ i ] - X0[ i ]);
    Sum += Abs(Y1[ i ] - Y0[ i ]);
    Sum += Abs(Z1[ i ] - Z0[ i ]);
  }
  
  fprintf(fout, "%lld\n", Sum);
}

int main()
{
  readData();
  
  solve();
	
  fclose(fin);
  fclose(fout);
  
  return 0;
}