Cod sursa(job #3125632)

Utilizator robertanechita1Roberta Nechita robertanechita1 Data 3 mai 2023 21:54:56
Problema Euro Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("euro.in");
ofstream fout("euro.out");

int n, t, a[35005];
long long ans;

/**
fiecare conversie :
s euro = s * k - t lei
a[1]*k + a[2]*k + ... + a[k]*k
-10 3 -2 4 -6 2 3
-10*1 - 1 = -11
27

poz[i] = ultima zi in care au fpst convertiti banii pana la ziua i, cand in ziua i
dp[i][0/1] = suma maxima obtinuta pana la pozitia i, 1 daca convertesc in ziua i, 0 daca nu
dp[i][0] = max(dp[i-1][0], dp[i-1][1])
dp[i][1] = max(dp[i-1][0] + (s[i] - s[poz[i-1] - 1]) * i - t, dp[i-1][1] + a[i] * i - t)
*/

int main()
{
    fin >> n >> t;
    for(int i = 1; i <= n; i++){
        fin >> a[i];
//        s[i] = s[i-1] + a[i];
    }
    for(int i = 1; i <= n; i++){
        long long s = 0;
        while(s >= 0 && i <= n)
            s += a[i], i++;
        i--;
        ans += 1LL * s * i - t;
    }
    fout << ans << "\n";
    return 0;
}