Pagini recente » Cod sursa (job #3168429) | Cod sursa (job #1387911) | Cod sursa (job #2816567) | Cod sursa (job #974020) | Cod sursa (job #147939)
Cod sursa(job #147939)
#include<stdio.h>
#include<math.h>
long x[50000],y[50000],z[50000],n;
long long sigma,sx,sy,sz;
int rez(long a[],long long s)
{ long st,dr,m,i;long long d,aux;
st=1;dr=n;
while (st<dr)
{ m=(st+dr)/2;
if (s==a[m])
st=dr;
else
if (s<a[m]) st=m+1;
else dr=m-1;
}
d=labs(a[dr]-s);
a[dr]=s;
for (i=dr-1;i>=1;i--) { aux=a[i+1]-1;d+=labs(a[i]-aux);a[i]=a[i+1]-1; }
for (i=dr+1;i<=n;i++) { aux=a[i-1]+1;d+=labs(aux-a[i]);a[i]=a[i-1]+1; }
return d;
}
int main()
{ long i;
FILE *f=fopen("inundatii.in","r");
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
{ fscanf(f,"%ld%ld%ld",&x[i],&y[i],&z[i]);
sx+=x[i];sy+=y[i];sz+=z[i]; }
fclose(f);
sx/=n;sy/=n;sz/=n;
sigma=rez(x,sx)+rez(y,sy)+rez(z,sz);
FILE *g=fopen("inundatii.out","w");
fprintf(g,"%lld\n",sigma);
fclose(g);
return 0;
}