Pagini recente » Cod sursa (job #1980571) | Cod sursa (job #1157476) | Cod sursa (job #2433078) | Cod sursa (job #1990329) | Cod sursa (job #125392)
Cod sursa(job #125392)
#include <stdio.h>
#define Nmax 50005
int N,x[Nmax],y[Nmax],z[Nmax],i;
long long st[Nmax],dr[Nmax],minx,miny,minz;
inline long long minim(long long a,long long b) { return a<b?a:b; }
void citire()
{
freopen("inundatii.in","r",stdin);
scanf("%d",&N);
for (i=1;i<=N;++i)
scanf("%d %d %d",&x[i],&y[i],&z[i]);
fclose(stdin);
}
void solve()
{
//mutare dupa x
for (i=2;i<=N;++i)
st[i]=st[i-1]+(i-1)*(x[i-1]-x[i]+1);
for (i=N-1;i>0;--i)
dr[i]=dr[i+1]+(N-i)*(x[i]-x[i+1]+1);
minx=st[1]+dr[1];
for (i=2;i<=N;++i)
minx=minim(st[i]+dr[i],minx);
//mutare dupa y
for (i=2;i<=N;++i)
st[i]=st[i-1]+(i-1)*(y[i-1]-y[i]+1);
for (i=N-1;i>0;--i)
dr[i]=dr[i+1]+(N-i)*(y[i]-y[i+1]+1);
miny=st[1]+dr[1];
for (i=2;i<=N;++i)
miny=minim(st[i]+dr[i],miny);
//mutare dupa z
for (i=2;i<=N;++i)
st[i]=st[i-1]+(i-1)*(z[i-1]-z[i]+1);
for (i=N-1;i>0;--i)
dr[i]=dr[i+1]+(N-i)*(z[i]-z[i+1]+1);
minz=st[1]+dr[1];
for (i=2;i<=N;++i)
minz=minim(st[i]+dr[i],minz);
}
int main()
{
citire();
solve();
freopen("inundatii.out","w",stdout);
printf("%lld",minx+miny+minz);
fclose(stdout);
return 0;
}