Pagini recente » Cod sursa (job #1529069) | Cod sursa (job #1966525) | Cod sursa (job #2099188) | Cod sursa (job #177809) | Cod sursa (job #751560)
Cod sursa(job #751560)
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream in("euro.in");
ofstream out("euro.out");
#define N 33000
int n, t, d[N], sp[N], v[N], p[N], l, lim;
long long sol[N];
inline int max(long long a, long long b) {
return a>b ? a : b;
}
int main() {
int i,j;
in >> n >> t;
l = 1;
for(i = 1; i<=n; ++i) {
in >> v[i];
if(d[l] >= 0)
d[l] += v[i];
else
d[++l] = v[i];
p[l] = i;
}
for(i = 1; i<=l; ++i) {
sp[i] = sp[i-1] + d[i];
sol[i] = -10000000000000LL;
}
lim = 2 * sqrt((double)t);
for(i = 1; i <= l; ++i)
for(j = max(i - lim, 0); j!=i; ++j)
sol[i] = max(sol[i], sol[j] + (sp[i] - sp[j]) * p[i] - t);
out << sol[l] << '\n';
return 0;
}