Cod sursa(job #250410)

Utilizator Mishu91Andrei Misarca Mishu91 Data 30 ianuarie 2009 21:24:06
Problema Inundatii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define MAX_N 50005

long X[MAX_N], Y[MAX_N], Z[MAX_N];
long long Rez;
int N;

struct cmp
{
    bool operator() (const int a, const int b) const
    {
        return a > b;
    }
};

void citire()
{
    scanf("%d\n",&N);

    for(int i = 1; i <= N; ++i)
        scanf("%ld %ld %ld\n",X+i, Y+i, Z+i);
}

void solve(long A[MAX_N])
{
    sort(A+1, A+N, cmp());

    int Ak[MAX_N], B[MAX_N];
    for(int i = 1; i <= N; ++i)
        Ak[i] = A[i] - i;

    int x = Ak[(N+1) >> 1];
    for(int i = 1; i <= N; ++i)
        B[i] = x+i;
    for(int i = 1; i <= N; ++i)
        Rez += abs(B[i] - A[i]);
}

int main()
{
    freopen("inundatii.in","rt",stdin);
    freopen("inundatii.out","wt",stdout);

    citire();
    solve(X);
    solve(Y);
    solve(Z);

    printf("%lld\n",Rez);
}