Pagini recente » Cod sursa (job #2495304) | Cod sursa (job #1451451) | Cod sursa (job #1869502) | Cod sursa (job #2772646) | Cod sursa (job #23165)
Cod sursa(job #23165)
#include <stdio.h>
#define LL long long
#define NMAX 35000
int N, T;
int a[NMAX];
int b[NMAX];
int t[NMAX];
LL din[NMAX];
LL LMAX(LL a, LL b) { return (a > b) ? a : b; }
int main()
{
int i, j, s;
freopen("euro.in", "r", stdin);
freopen("euro.out", "w", stdout);
scanf("%d %d", &N, &T);
for (i = 1; i <= N; i++) scanf("%d", &a[i]);
for (i = 1; i <= N; ) {
for (s = 0, j = i; j <= N && s >= 0; s += a[j], j++);
b[++b[0]] = s;
t[++t[0]] = j - 1;
i = j;
}
// dinamica in N^2 pe componente
int last = 1;
LL aux;
for (i = 1; i <= b[0]; i++) {
din[i] = -((LL)1 << 62);
for (j = i, s = 0; j >= last; j--) {
s += b[j];
aux = din[j-1] + (LL) s * t[i] - T;
if (aux > din[i]) din[i] = aux, last = j;
}
}
printf("%lld\n", din[b[0]]);
fclose(stdin);
fclose(stdout);
return 0;
}