Pagini recente » Cod sursa (job #3001819) | Cod sursa (job #2968194) | Cod sursa (job #2652931) | Cod sursa (job #1309172) | Cod sursa (job #2763250)
#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;
}