Pagini recente » Cod sursa (job #2622023) | Cod sursa (job #1228156) | Cod sursa (job #119574) | Cod sursa (job #746847) | Cod sursa (job #125077)
Cod sursa(job #125077)
//#define DEBUG
#include <cstdio>
#ifdef DEBUG
#include <iostream>
using namespace std;
#endif
#define NMAX 50005
struct cladire
{
int x, y, z;
};
int N;
cladire B[NMAX];
long long sol;
long long distanta(cladire A, cladire B)
{
return A.x-B.x + A.y-B.y + A.z-B.z;
}
void solve()
{
long long cost_transport=0, value;
for(int i=1; i<N; ++i)
cost_transport += distanta(B[i], B[0]);
sol = cost_transport + 3*(long long)N*(N-1)/2;
#ifdef DEBUG
cerr<<sol<<" ";
#endif
for(int i=1; i<N; ++i)
{
cost_transport -= (long long)(N-i)*distanta(B[i], B[i-1]);
cost_transport += (long long)i*distanta(B[i], B[i-1]);
value = cost_transport + 3*(long long)i*(i+1)/2 + 3*(long long)(N-i-1)*(N-i)/2;
#ifdef DEBUG
cerr<<value<<" ";
#endif
if(sol>value)
sol=value;
}
}
int main()
{
freopen("inundatii.in", "r", stdin);
freopen("inundatii.out", "w", stdout);
scanf("%d", &N);
for(int i=N-1; i>=0; --i)
scanf("%d %d %d", &B[i].x, &B[i].y, &B[i].z);
solve();
printf("%Ld\n", sol);
return 0;
}