Pagini recente » Cod sursa (job #61142) | Cod sursa (job #1415949) | Cod sursa (job #161038) | Cod sursa (job #1520183) | Cod sursa (job #147963)
Cod sursa(job #147963)
#include<stdio.h>
long x[50000],y[50000],z[50000],n;
long long sigma,sx=0,sy=0,sz=0;
long long rez(long a[],long long s)
{ long st,dr,m,i;long long aux,d,auxd;
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=a[dr]-s;
if (d<0) d*=(-1);
a[dr]=s;
for (i=dr-1;i>=1;i--) { aux=a[i+1]-1;
auxd=a[i]-aux;
if (auxd<0) auxd*=(-1);
a[i]=a[i+1]-1;
d+=auxd; }
for (i=dr+1;i<=n;i++) { aux=a[i-1]+1;
auxd=aux-a[i];
if (auxd<0) auxd*=(-1);
a[i]=a[i-1]+1;
d+=auxd; }
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=sx/n;
sy=sy/n;
sz=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;
}