Cod sursa(job #2023395)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 18 septembrie 2017 21:21:01
Problema Bilute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 30005

long long C[1 + MAXN], L[1 + MAXN];
long long S1[1 + MAXN], S2[1 + MAXN];
long long S3[1 + MAXN], S4[1 + MAXN];

int main(){
    FILE*fi,*fo;
    fi = fopen("bilute.in","r");
    fo = fopen("bilute.out","w");

    int n;
    fscanf(fi,"%d", &n);
    for(int i = 1; i <= n; i++){
        fscanf(fi,"%d%d", &C[i], &L[i]);
        S3[i] = S3[i - 1] + C[i];
        S1[i] = S1[i - 1] + S3[i - 1] + C[i - 1] * L[i - 1];
    }

    for(int i = n; i >= 1; i--){
        S4[i] = S4[i + 1] + C[i];
        S2[i] = S2[i + 1] + S4[i + 1] + C[i + 1] * L[i + 1];
    }

    int nmin = 1;
    for(int i = 1; i <= n; i++)
        if(S1[i] + S2[i] < S1[nmin] + S2[nmin])
            nmin = i;
    fprintf(fo,"%d %lld", nmin, S1[nmin] + S2[nmin]);

    fclose(fi);
    fclose(fo);
    return 0;
}