Cod sursa(job #126311)

Utilizator DastasIonescu Vlad Dastas Data 21 ianuarie 2008 21:07:10
Problema Inundatii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>

const int maxn = 50001;

FILE *in = fopen("inundatii.in","r"), *out = fopen("inundatii.out","w");

int n;
long long x[maxn], y[maxn], z[maxn];

long long p[maxn], q[maxn], r[maxn];

void read()
{
    fscanf(in, "%d", &n);

    for ( int i = 1; i <= n; ++i )
        fscanf(in, "%lld %lld %lld", &x[i], &y[i], &z[i]);
}

void go(long long a[], long long b[])
{
    for ( int i = 1; i <= n; ++i )
        b[i] = a[i] - i;

    int m = n % 2 == 0 ? (b[n/2] + b[n/2+1]) / 2 : b[n/2+1];
    //int m = b[n/2];


    for ( int i = 1; i <= n; ++i )
        b[i] = m + i;
}

long long myabs(int x)
{
    return x < 0 ? -x : x;
}

int main()
{
    read();

    go(x, p);
    go(y, q);
    go(z, r);

    long long s = 0;
    for ( int i = 1; i <= n; ++i )
        s = (long long)s + myabs(x[i] - p[i]) + myabs(y[i] - q[i]) + myabs(z[i] - r[i]);

    fprintf(out, "%lld\n", s);

	return 0;
}