<script>
let right = 2;
let left = 4;
let dp =
new
Array(left);
function
findSubarraySum(ind, flips, n, a, k)
{
if
(flips > k)
return
(-1e9);
if
(ind == n)
return
0;
if
(dp[ind][flips] != -1)
return
dp[ind][flips];
let ans = 0;
ans = Math.max(0, a[ind]
+ findSubarraySum(
ind + 1, flips, n, a, k));
ans = Math.max(ans, -a[ind]
+ findSubarraySum(ind + 1,
flips + 1,
n, a, k));
return
dp[ind][flips] = ans;
}
function
findMaxSubarraySum(a, n, k)
{
for
(let i = 0; i < n; i++)
{
dp[i] =
new
Array(k);
for
(let j = 0; j < k + 1; j++)
{
dp[i][j] = -1;
}
}
let ans = (-1e9);
for
(let i = 0; i < n; i++)
ans = Math.max(ans,
findSubarraySum(i, 0, n, a, k));
if
(ans == 0 && k == 0)
{
let max = Number.MIN_VALUE;
for
(let i = 0; i < a.length; i++)
{
max = Math.max(max, a[i]);
}
return
max;
}
return
ans;
}
let a = [ -1, -2, -100, -10 ];
let n = a.length;
let k = 1;
document.write(findMaxSubarraySum(a, n, k));
</script>