Cod sursa(job #2770614)

Utilizator david.teacaDavid Stefan Teaca david.teaca Data 22 august 2021 12:01:35
Problema Euro Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("euro.in");
ofstream out("euro.out");
typedef long long ll;
const ll inf=4e18;
vector<ll> comp;
vector<ll> indi;
ll v[34570],n,t;
ll dp[34570];
int main()
{
    in>>n>>t;
    for(ll i=1;i<=n;++i)
        in>>v[i];
    comp.push_back(0);
    indi.push_back(0);
    for(ll i=1;i<=n;++i)
    {
        ll sum=v[i];
        while(sum>=0 and i<n)
            ++i,sum+=v[i];
        comp.push_back(sum);
        indi.push_back(i);
    }
    ll cnt=comp.size()-1;
    for(ll i=1;i<=cnt;++i)
        comp[i]+=comp[i-1];
    ll behind=sqrt(t)+1;
    for(ll i=1;i<=cnt;++i)
    {
        dp[i]=-inf;
        for(ll j=max(0LL,i-behind);j<i;++j)
            dp[i]=max(dp[i],dp[j]+(comp[i]-comp[j])*indi[i]-t);
    }
    out<<dp[cnt]<<'\n';
    return 0;
}