static int findWater(int [] arr, int n)
int []right = new int[n];
for (int i = 1; i < n; i++)
left[i] = Math.Max(left[i-1], arr[i]);
for (int i = n-2; i >= 0; i--)
right[i] = Math.Max(right[i+1], arr[i]);
for (int i = 0; i < n; i++)
water += Math.Min(left[i],right[i]) - arr[i];
public static void Main()
int []arr = {0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1};
Console.WriteLine("Maximum water that can be accumulated is ");
Console.WriteLine(findWater(arr, n));