Cod sursa(job #257804)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 13 februarie 2009 23:48:07
Problema Inundatii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>

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

int N,x[50005],y[50005],z[50005];

int main(){
    fscanf(fin,"%d",&N);
    for(int i=1;i<=N;i++){
        fscanf(fin,"%d %d %d",&x[i],&y[i],&z[i]);
    }


    long long medx=0,medy=0,medz=0,rez=0;
    if(N%2){
        medx=x[N/2+1]-N/2-1;
        medy=y[N/2+1]-N/2-1;
        medz=z[N/2+1]-N/2-1;
    }
    else{
        medx=(x[N/2+1]-N/2-1+x[N/2]-N/2)/2;
        medy=(y[N/2+1]-N/2-1+y[N/2]-N/2)/2;
        medz=(z[N/2+1]-N/2-1+z[N/2]-N/2)/2;

    }
    for(int i=1;i<=N;i++){
        if(x[i]-medx-i > 0)
            rez+=(long long)x[i]-medx-i;
        else
            rez-=(long long)x[i]-medx-i;


        if(y[i]-medy-i > 0)
            rez+=(long long)y[i]-medy-i;
        else
            rez-=(long long)y[i]-medy-i;

        if(z[i]-medz-i > 0)
            rez+=(long long)z[i]-medz-i;
        else
            rez-=(long long)z[i]-medz-i;


    }

    fprintf(fout,"%lld\n",rez);
    fclose(fin);
    fclose(fout);
    return 0;


}