Cod sursa(job #2020724)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 11 septembrie 2017 16:34:04
Problema Bilute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <cstdio>

using namespace std;

const int MAX_N = 3e4;
int c[1 + MAX_N];
int l[1 + MAX_N];


int main() {
//    freopen( "bilute.in", "r", stdin );
//    freopen( "bilute.out", "w", stdout );

    int n, num_left = 0, num_right = 0, loss1 = 0, loss2 = 0;
    cin >> n;

    for ( int i = 1; i <= n; i ++ ) {
        cin >> c[i] >> l[i];
        num_right += c[i];
        loss1 += c[i] * i;
        loss2 += c[i] * l[i];
    }

    int mx_ix, mx_loss = 2e9;/// 3e4 * 100 * 100 + 3e4 ^ 2 = 12e8 = 1.2e9 > 1e9
    for ( int i = 1; i <= n; i ++ ) {
        loss1 += num_left - num_right;
        int t_loss = loss1 + loss2 - c[i] * l[i];
        if ( t_loss < mx_loss ) {
            mx_loss = t_loss;
            mx_ix = i;
        }
        num_right -= c[i];
        num_left += c[i];
    }

    cout << mx_ix << ' ' << mx_loss << endl;

    return 0;
}