Cod sursa(job #126316)

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

const int maxn = 50001;

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

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

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

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

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

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

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

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

    int r = 0;
    for ( int i = 1; i <= n; ++i )
        b[i] = m + i, r = r + myabs(a[i] - b[i]);

    return r;
}

int main()
{
    read();

    int s = 0;
    s += go(x, p);
    s += go(y, q);
    s += go(z, r);

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

	return 0;
}