Cod sursa(job #125005)

Utilizator rethosPaicu Alexandru rethos Data 20 ianuarie 2008 10:53:54
Problema Inundatii Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasele 11-12 Marime 0.96 kb
#include <stdio.h>
#define NMAX 50001
FILE *f=fopen("inundatii.in","rt");
FILE *g=fopen("inundatii.out","wt");
void rot(float &x)
{ if ((long long)x==(long long)(x+0.49)) x=(long long)x;
	else x=(long long)(x+1);
}
float abs(float x)
{ if (x>0) return x;
  return -x;
}
int main()
{ long n,i;
  long long x[NMAX],y[NMAX],z[NMAX],s;
  float xm,ym,zm,sx,sy,sz;
  sx=sy=sz=0;
  fscanf(f,"%ld",&n);
  for (i=1;i<=n;i++)
	{ fscanf(f,"%lld %lld %lld",&x[i],&y[i],&z[i]);
	  sx+=x[i];
	  sy+=y[i];
	  sz+=z[i];
	}
  fclose(f);
  xm=sx/n;
  ym=sy/n;
  zm=sz/n;
  rot(xm);
  rot(ym);
  rot(zm);
  s=0;
  if (n%2)//n=impar
	{ for (i=1;i<=n;i++)
		{ s+=abs(x[i]-(xm+(n/2-n+i)));
		  s+=abs(y[i]-(ym+(n/2-n+i)));
		  s+=abs(z[i]-(zm+(n/2-n+i)));
		}
	}
  else //n=par
	{ for (i=1;i<=n;i++)
		{ s+=abs(x[i]-(xm+(n/2-n+i)));
		  s+=abs(y[i]-(ym+(n/2-n+i)));
		  s+=abs(z[i]-(zm+(n/2-n+i)));
		}
	}
  fprintf(g,"%lld",s);
  fclose(g);
  return 0;
}