Pagini recente » Cod sursa (job #489544) | Cod sursa (job #204858) | Cod sursa (job #242740) | Clasament 24_februarie_simulare_oji_2024_clasele_11_12 | Cod sursa (job #125445)
Cod sursa(job #125445)
#include <stdio.h>
#include <string.h>
const int n_max = 50001;
int x[n_max],
y[n_max],
z[n_max],
x1[n_max],
y1[n_max],
z1[n_max];
int i, n;
long long sol, minim;
int abs(int x)
{
if (x < 0)
return -x;
return x;
}
int main()
{
freopen("inundatii.in","r",stdin);
freopen("inundatii.out","w",stdout);
scanf("%d", &n);
for (i =1 ; i <= n; ++ i)
scanf("%d %d %d", &x[i], &y[i], &z[i]);
memcpy(x1,x,sizeof(x));
memcpy(y1,y,sizeof(y));
memcpy(z1,z,sizeof(z));
//nim = 1<<30;
for (i = n; i > 1; --i)
{
sol += abs(x1[i]-x1[i-1]) + abs(y1[i] - y1[i-1]) + abs(z1[i] - z1[i-1])+3;
x1[i-1] = x1[i] + 1;
y1[i-1] = y1[i] + 1;
z1[i-1] = z1[i] + 1;
}
minim = sol;
sol = 0;
memcpy(x1,x,sizeof(x));
memcpy(y1,y,sizeof(y));
memcpy(z1,z,sizeof(z));
for (i = 1; i < n; ++ i)
{
sol += abs(x1[i]-x1[i+1]) + abs(y1[i] - y1[i+1]) + abs(z1[i] - z1[i+1])+3;
x1[i] = (x1[i]+x1[i+1])/2;
y1[i] = (y1[i]+y1[i+1])/2;
z1[i] = (z1[i]+z1[i+1])/2;
x1[i+1] = x1[i] + 1;
y1[i+1] = y1[i] + 1;
z1[i+1] = z1[i] + 1;
}
if (sol < minim)
minim = sol;
printf("%lld\n", minim);
return 0;
}