using
System;
class
GFG {
static
int
maximumDifferenceSum(
int
[]arr,
int
N)
{
int
[,]dp =
new
int
[N,2];
for
(
int
i = 0; i < N; i++)
dp[i,0] = dp[i,1] = 0;
for
(
int
i = 0; i < (N - 1); i++)
{
dp[i + 1,0] = Math.Max(dp[i,0],
dp[i,1] + Math.Abs(1 - arr[i]));
dp[i + 1,1] = Math.Max(dp[i,0] +
Math.Abs(arr[i + 1] - 1),
dp[i,1] + Math.Abs(arr[i + 1]
- arr[i]));
}
return
Math.Max(dp[N - 1,0], dp[N - 1,1]);
}
public
static
void
Main ()
{
int
[]arr = {3, 2, 1, 4, 5};
int
N = arr.Length;
Console.Write( maximumDifferenceSum(arr, N));
}
}