題意:
給一個的數組,,求連續的一段區間內,求數組元素總和減去區間內數組的最大值的最大值。
確定區間最值爲 ,然後找到最大連續子段和求最值即可。
AC代碼:
const int N = 1e6 + 50;
int n, m;
int a[N];
int main()
{
int T;
sd(n);
rep(i, 1, n)
sd(a[i]);
int ans = 0;
rep(k, 1, 30)
{
int sum = 0;
rep(i, 1, n)
{
if (a[i] > k)
continue;
sum += a[i];
if (sum < 0)
sum = 0;
else
ans = max(ans, sum - k);
}
}
pd(ans);
return 0;
}