Cod sursa(job #125197)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 20 ianuarie 2008 12:00:31
Problema Inundatii Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasele 11-12 Marime 0.78 kb
#include <stdio.h>
#define inf 1000000000

long n,i,x[50002],y[50002],z[50002];
long long suma,smin,t,d;

int main(){
    freopen("inundatii.in","r",stdin);
    freopen("inundatii.out","w",stdout);
    
    scanf("%ld",&n);
    for (i=1;i<=n;i++){
        scanf("%ld %ld %ld",&x[i],&y[i],&z[i]);
    }
    suma=0;
    for (i=1;i<n;i++)
        suma=(long long)suma+x[i]-x[n]+y[i]-y[n]+z[i]-z[n];
    smin=(long long)inf*inf;
    for (i=n;i;i--){
        t=(long long)3*(i-1)*i/2;
        t+=(long long)3*(n-i)*(n-i+1)/2;
        //printf("%lld\n",(long long)suma+t);
        if ((long long)suma+t<smin)smin=(long long)suma+t;
        d=x[i-1]-x[i]+y[i-1]-y[i]+z[i-1]-z[i];
        suma=(long long)suma+d*(n-2*i+2);
    }
    printf("%lld\n",smin);
    
    return 0;
}