// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Function to return the maximum
// water that can be stored
int maxWater(int arr[], int n)
{
// To store the maximum water
// that can be stored
int res = 0;
// For every element of the array
for (int i = 1; i < n - 1; i++) {
// Find the maximum element on its left
int left = arr[i];
for (int j = 0; j < i; j++)
left = max(left, arr[j]);
// Find the maximum element on its right
int right = arr[i];
for (int j = i + 1; j < n; j++)
right = max(right, arr[j]);
// Update the maximum water
res = res + (min(left, right) - arr[i]);
}
return res;
}
// Driver code
int main()
{
int arr[] = {0,1,0,2,1,0,1,3,2,1,2,1};
int n = sizeof(arr) / sizeof(arr[0]);
cout << maxWater(arr, n);
return 0;
}
Ly8gQysrIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhcHByb2FjaCAKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgovLyBGdW5jdGlvbiB0byByZXR1cm4gdGhlIG1heGltdW0gCi8vIHdhdGVyIHRoYXQgY2FuIGJlIHN0b3JlZCAKaW50IG1heFdhdGVyKGludCBhcnJbXSwgaW50IG4pIAp7IAoJLy8gVG8gc3RvcmUgdGhlIG1heGltdW0gd2F0ZXIgCgkvLyB0aGF0IGNhbiBiZSBzdG9yZWQgCglpbnQgcmVzID0gMDsgCgoJLy8gRm9yIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGFycmF5IAoJZm9yIChpbnQgaSA9IDE7IGkgPCBuIC0gMTsgaSsrKSB7IAoKCQkvLyBGaW5kIHRoZSBtYXhpbXVtIGVsZW1lbnQgb24gaXRzIGxlZnQgCgkJaW50IGxlZnQgPSBhcnJbaV07IAoJCWZvciAoaW50IGogPSAwOyBqIDwgaTsgaisrKSAKCQkJbGVmdCA9IG1heChsZWZ0LCBhcnJbal0pOyAKCgkJLy8gRmluZCB0aGUgbWF4aW11bSBlbGVtZW50IG9uIGl0cyByaWdodCAKCQlpbnQgcmlnaHQgPSBhcnJbaV07IAoJCWZvciAoaW50IGogPSBpICsgMTsgaiA8IG47IGorKykgCgkJCXJpZ2h0ID0gbWF4KHJpZ2h0LCBhcnJbal0pOyAKCgkJLy8gVXBkYXRlIHRoZSBtYXhpbXVtIHdhdGVyIAoJCXJlcyA9IHJlcyArIChtaW4obGVmdCwgcmlnaHQpIC0gYXJyW2ldKTsgCgl9IAoKCXJldHVybiByZXM7IAp9IAoKLy8gRHJpdmVyIGNvZGUgCmludCBtYWluKCkgCnsgCglpbnQgYXJyW10gPSB7MCwxLDAsMiwxLDAsMSwzLDIsMSwyLDF9OyAKCWludCBuID0gc2l6ZW9mKGFycikgLyBzaXplb2YoYXJyWzBdKTsgCgoJY291dCA8PCBtYXhXYXRlcihhcnIsIG4pOyAKCglyZXR1cm4gMDsgCn0K