Pagini recente » Cod sursa (job #1670338) | Cod sursa (job #2971622) | Cod sursa (job #1603179) | Cod sursa (job #2341270) | Cod sursa (job #125453)
Cod sursa(job #125453)
#include <cstdio>
#define fin "inundatii.in"
#define fout "inundatii.out"
const int Nmax = 51000;
int N;
int x[Nmax],y[Nmax],z[Nmax];
long long ret,st[Nmax],dr[Nmax];
void readdata()
{
int i;
freopen(fin,"r",stdin);
scanf("%d",&N);
for (i=1;i<=N;++i)
scanf("%d%d%d",&x[i],&y[i],&z[i]);
}
int abs(int a)
{
if ( a < 0 )
a*=(-1);
return a;
}
void solve()
{
int i,j;
int currx,curry,currz;
long long sum;
ret = -1;
st[0]=0;
for (i=2;i<=N;++i)
st[i] = st[i-1] + (i-1) * ( abs(x[i]-x[i-1]) + abs(y[i]-y[i-1]) + abs(z[i]-z[i-1]) + 3 );
for (i=N-1;i>0;--i)
dr[i] = dr[i+1] + (N-i) * ( abs(x[i]-x[i+1]) + abs(y[i]-y[i+1]) + abs(z[i]-z[i+1]) + 3 );
for (i=1;i<=N;++i)
if ( st[i] + dr[i] < ret || ret == -1 )
ret = st[i] + dr[i];
freopen(fout,"w",stdout);
printf("%lld\n",ret);
}
int main()
{
// printf("%d\n",(2*sizeof(st) + 3*sizeof(x))/1024);
readdata();
solve();
return 0;
}