Cod sursa(job #2020649)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 11 septembrie 2017 09:20:11
Problema Bilute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

const int MAXN = (int) 3e4;

int l[MAXN + 1], c[MAXN + 1];

int spc[MAXN + 1];

long long sp[MAXN + 1];

int main() {
    FILE *fi, *fout;
    int i, n;
    fi = fopen("bilute.in" ,"r");
    fout = fopen("bilute.out" ,"w");
    fscanf(fi,"%d " ,&n);
    long long sum = 0;
    for(i = 1; i <= n; i++) {
        fscanf(fi,"%d %d " ,&c[i],&l[i]);
        sum += 1LL * c[i] * l[i];
        spc[i] = spc[i - 1] + c[i];
        sp[i] = sp[i - 1] + 1LL * c[i] * i;
    }
    long long ans = (1LL << 62);
    int p;
    for(i = 1; i <= n; i++) {
        if(ans > 1LL * spc[i] * i - sp[i] + sp[n] - sp[i] - 1LL * (spc[n] - spc[i]) * i + sum - 1LL * l[i] * c[i]) {
            ans = 1LL * spc[i] * i - sp[i] + sp[n] - sp[i] - 1LL * (spc[n] - spc[i]) * i + sum - 1LL * l[i] * c[i];
            p = i;
        }
    }
    fprintf(fout,"%d %lld" ,p,ans);
    fclose(fi);
    fclose(fout);
    return 0;
}