Cod sursa(job #2859289)

Utilizator mateitudordmDumitru Matei mateitudordm Data 1 martie 2022 09:33:28
Problema Bilute Scor 100
Compilator cpp-64 Status done
Runda tagalaibas Marime 1 kb
#include <bits/stdc++.h>
#define nmax 30000
#define int long long

using namespace std;

const long long inf = 1e17;
int c[nmax + 1], l[nmax + 1], spst[nmax + 1], spsumst[nmax + 1], spdr[nmax + 1], spsumdr[nmax + 1], splst[nmax + 1], spldr[nmax + 1];

signed main()
{
    ifstream cin("bilute.in");
    ofstream cout("bilute.out");
    int n, i, minn = inf, cul = 0, act;
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> c[i] >> l[i];
    for (i = 1; i <= n; i++)
        spst[i] = spst[i - 1] + c[i], spsumst[i] = spsumst[i - 1] + c[i] * i, splst[i] = splst[i - 1] + l[i] * c[i];
    for (i = n; i >= 1; i--)
        spdr[i] = spdr[i + 1] + c[i], spsumdr[i] = spsumdr[i + 1] + c[i] * i, spldr[i] = spldr[i + 1] + l[i] * c[i];
    for (i = 1; i <= n; i++)
    {
        act = spst[i - 1] * i - spsumst[i - 1] + spsumdr[i + 1] - spdr[i + 1] * i + splst[i - 1] + spldr[i + 1];
        if (act < minn)
            minn = act, cul = i;
    }
    cout << cul << " " << minn;
    return 0;
}