Pagini recente » Cod sursa (job #853491) | Cod sursa (job #2244789) | Cod sursa (job #1783336) | Cod sursa (job #1288976) | Cod sursa (job #1821143)
#include<bits/stdc++.h>
using namespace std;
long long n,t,v[35005];
long long sol,s,dp[35005],dw,d;
pair<long long,long long > w[35005];
int main()
{
freopen("euro.in","r",stdin);
freopen("euro.out","w",stdout);
scanf("%lld%lld",&n,&t);
s=0LL;
dw=-1LL;
for(long long i=1;i<=n;i++)
{
scanf("%lld",&v[i]);
s=s+1LL*v[i];
if(s<0)
{
w[++dw]=make_pair(s,i);
s=0;
}
}
if(dw==(-1) || w[dw].second!=n)
{
w[++dw]=make_pair(s,n);
}
for(int i=0;i<=dw;i++)
{
s=w[i].first;
d=w[i].second;
dp[i+1]=dp[i]+s*d-t;
for(int j=(i-1);j>=0 && (i-j)*(i-j)<=t+200;j--)
{
s+=w[j].first;
dp[i+1]=max(dp[i+1],dp[j]+s*d-t);
}
}
printf("%lld\n",dp[dw+1]);
return 0;
}