题意:
给一个的数组,,求连续的一段区间内,求数组元素总和减去区间内数组的最大值的最大值。
确定区间最值为
,然后找到最大连续子段和求最值即可。
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;
}