Cod sursa(job #2735595)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 2 aprilie 2021 16:44:25
Problema Euro Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

#define nozerous(x) (x & -x)
using namespace std;

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

const int NMAX(34580);
const long long inf(LLONG_MIN);
typedef long long ll;
ll dp[NMAX], v[NMAX], sum[NMAX], AIB[NMAX];
int n, t;

void Add(ll val, int poz){
    for(int i = poz; i <= n; i += nozerous(i))
        AIB[poz] += val;
}

ll Query(int poz){
    ll maxx = inf;
    for(int i = poz; i >= 1; i -= nozerous(i))
        maxx = max(maxx, AIB[i]);
    return maxx;
}

int main()
{
    fin >> n >> t;

    for(int i = 1; i <= n; ++i){
        fin >> v[i];

        sum[i] = sum[i - 1] + v[i];
    }

    for(int i = 1; i <= n; ++i){
        Add(v[i], 1);
        Add(-v[i], i + 1);
        dp[i] = -t + Query(i - 1);
        Add(dp[i], i);
        Add(-dp[i], i + 1);
    }

    fout << dp[n] << '\n';
    return 0;
}