class Solution {
public:
int trap(int A[], int n) {
if(n <= 0)
return 0;
int * water = new int[n];
int current =0;
for(int i=0 ;i<n;i++)
{
current = max(current,A[i]);
water[i] = current;
}
current = 0;
for(int i =n-1;i>=0;i--)
{
current = max(current,A[i]);
water[i] = min(water[i],current);
}
int result = 0;
for(int i =0; i < n;i++)
{
result += water[i]-A[i];
}
delete [] water;
return result;
}
};