Pagini recente » Cod sursa (job #683783) | Cod sursa (job #889599) | Cod sursa (job #565889) | Cod sursa (job #620993) | Cod sursa (job #603559)
Cod sursa(job #603559)
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 35010
int n, m, i, t, j;
long long v[maxn], g[maxn], l[maxn], s[maxn], d[maxn];
int main()
{
freopen("euro.in", "r", stdin);
freopen("euro.out", "w", stdout);
scanf("%d%d", &n, &t);
m=1;
for(int i=1; i<=n; ++i)
{
scanf("%lld", &v[i]);
s[i]=s[i-1]+v[i];
if(g[m]<0)
++m;
g[m]+=v[i];
l[m]=i;
}
for(int i=1; i<=m; ++i)
{
d[i]=-1LL*1000000000*1000000000;
for(int j=i; j>=0 && (i-j)*(i-j)<=t+1000; --j)
d[i]=max(d[i], d[j]+(s[l[i]]-s[l[j]])*l[i]-t);
}
printf("%lld\n", d[m]);
return 0;
}