Pagini recente » Cod sursa (job #2663566) | Cod sursa (job #2962767) | Cod sursa (job #2287550) | Cod sursa (job #1200074) | Cod sursa (job #125563)
Cod sursa(job #125563)
#include <stdio.h>
#include <stdlib.h>
long ok=0,n,i,j;
long long xi[50000],yi[50000],zi[50000],x1,y3,z1,x2,y2,z2,x,y,z;
long long min=0;
int main()
{
FILE*f=fopen("inundatii.in","r");
FILE*g=fopen("inundatii.out","w");
fscanf(f,"%ld",&n);
xi[0]=1000000000;
for (i=1; i<=n; i++)
{
fscanf(f,"%lld%lld%lld",&xi[i],&yi[i],&zi[i]);
if (xi[i]<xi[i-1]) ok=1; }
if (ok==0) fprintf(g,"%lld",min);
else
if (n % 2==1)
{
x1=xi[n / 2 + 1]-1; y3=yi[n / 2 + 1]-1; z1=zi[n / 2 + 1]-1;
x2=xi[n / 2 + 1]+1; y2=yi[n / 2 + 1]+1; z2=zi[n / 2 + 1]+1;
for (i=n/2; i>=1; i--)
{
min+=abs(xi[i]-x1)+abs(yi[i]-y3)+abs(zi[i]-z1);
x1--; y3--; z1--;
min+=abs(xi[n-i+1]-x2)+abs(yi[n-i+1]-y2)+abs(zi[n-i+1]-z2);
x2++; y2++; z2++;
}
}
else
{
x=(xi[n / 2]+xi[n / 2 + 1]) / 2;
y=(yi[n / 2]+yi[n / 2 + 1]) / 2;
z=(zi[n / 2]+zi[n / 2 + 1]) / 2;
x1=x; y3=y; z1=z;
x2=x+1; y2=y+1; z2=z+1;
for (i=n/2; i>=1; i--)
{
min+=abs(xi[i]-x1)+abs(yi[i]-y3)+abs(zi[i]-z1);
x1--; y3--; z1--;
min+=abs(xi[n-i+1]-x2)+abs(yi[n-i+1]-y2)+abs(zi[n-i+1]-z2);
x2++; y2++; z2++;
}
}
fprintf(g,"%lld",min);
return 0;
}