Pagini recente » Cod sursa (job #1543810) | Cod sursa (job #3234211) | Cod sursa (job #1865577) | Cod sursa (job #396132) | Cod sursa (job #2763257)
#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)+5;
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;
}