Pagini recente » Cod sursa (job #1224561) | Cod sursa (job #2382982) | Cod sursa (job #1502626) | Cod sursa (job #429142) | Cod sursa (job #778367)
Cod sursa(job #778367)
#include <stdio.h>
#include <algorithm>
#include <vector>
#define MAXN 35000
#define per pair<long long, long long>
using namespace std;
long long A[MAXN];
long long D[MAXN];
per Q[MAXN];
long long s;
int i, j, N, M;
long long T;
per a;
int main()
{
freopen("euro.in","r",stdin);
freopen("euro.out","w",stdout);
scanf("%d %lld", &N, &T);
for (i = 1; i <= N; ++i)
scanf("%lld",&A[i]);
M = 0;
for (i = 1; i <= N; ){
s = 0;
while (s >= 0 && i <= N){
s = s + A[i];
++i;
}
Q[++M] = make_pair(s, i-1);
}
D[0] = 0;
for (i = 1; i <= M; ++i){
a = Q[i];
D[i] = D[i-1] + a.first * a.second - T;
for (j = i - 1; j >= 1 && (j-i) * (j-i) <= T + 100; --j){
a.first += Q[j].first;
D[i] = max(D[i], D[j] + a.first * a.second - T);
}
}
printf("%lld\n", D[M]);
return 0;
}