Pagini recente » Cod sursa (job #2178854) | Cod sursa (job #2645491) | Cod sursa (job #2974935) | Cod sursa (job #3002875) | Cod sursa (job #126455)
Cod sursa(job #126455)
#include <cstdio>
#define NMAX 50001
int N;
int x[NMAX], y[NMAX], z[NMAX];
void read ()
{
scanf ("%d\n", &N);
int i;
for (i = 1; i <= N; ++ i)
scanf ("%d %d %d\n", x + i, y + i, z + i);
}
inline int modul (int x)
{
return x > 0 ? x : -x;
}
long long findMin (int A[])
{
int pow, i, cnt, x;
long long s1, s2;
for (pow = 1; pow < 100000000; pow <<= 1);
for (x = 0; pow; pow >>= 1)
{
s1 = s2 = 0;
for (i = 1, cnt = 0; i <= N; ++ i, ++ cnt)
s1 = (long long)(s1 + modul (A[i] - (x + pow + cnt)));
for (i = 1, cnt = 0; i <= N; ++ i, ++ cnt)
s2 = (long long)(s2 + modul (A[i] - (x + pow + cnt + 1)));
//printf ("%d %d\n", s1, s2);
if (s1 >= s2)
x += pow;
}
//printf ("%d\n", x);
s1 = 0;
for (i = 1, cnt = 0; i <= N; ++ i, ++ cnt)
s1 = (long long)(s1 + modul (A[i] - (x + pow + cnt)));
return s1;
}
void solve ()
{
long long sol;
sol = (findMin (x));
//printf ("%d\n", sol);
sol += findMin (y);
//printf ("%d\n", sol);
sol += findMin (z);
printf ("%lld\n", sol);
}
int
main ()
{
freopen ("inundatii.in", "rt", stdin);
freopen ("inundatii.out", "wt", stdout);
read ();
solve ();
return 0;
}