Cod sursa(job #1493333)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 29 septembrie 2015 00:57:25
Problema Inundatii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#define MAXN 50000
int m[3][MAXN+1], n;
inline long long solve(int v[]){
    int i;
    long long s=0, min;
    for(i=0; i<n; i++){
        s+=v[i];
    }
    min=s;
    for(i=n-1; i>=0; i--){
        s-=(i+1)*(long long)(v[i]-v[i+1]);
        s+=(n-i-1)*(long long)(v[i]-v[i+1]);
        if(min>s){
            min=s;
        }
    }
    for(i=n/2; i<n; i++){
        min+=i-n/2;
    }
    for(i=n/2; i>=0; i--){
        min+=n/2-i;
    }
    return min;
}
int main(){
    int i;
    FILE *fin, *fout;
    fin=fopen("inundatii.in", "r");
    fout=fopen("inundatii.out", "w");
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++){
        fscanf(fin, "%d%d%d", &m[0][i], &m[1][i], &m[2][i]);
    }
    fprintf(fout, "%lld\n", solve(m[0])+solve(m[1])+solve(m[2]));
    fclose(fin);
    fclose(fout);
    return 0;
}