#include <iostream> using namespace std; long long trappingWater(int arr[], int n){ int *Lmax = new int[n]; int *Rmax = new int[n]; Lmax[0] = arr[0]; for(int i = 1; i<n; i++) { int temp = max(arr[i],Lmax[i-1]); Lmax[i] = temp; } Rmax[n-1] = arr[n-1]; for(int i = n-2; i>=0; i--) { int temp = max(arr[i],Rmax[i+1]); Rmax[i] = temp; } long long water = 0; for(int i = 1; i<n-1; i++) { water = water+ min(Lmax[i],Rmax[i]) - arr[i]; } return water; } int main() { int arr[] = {3,0,0,2,0,4}; int n = sizeof(arr)/sizeof(arr[0]); long long x = trappingWater(arr,n); cout<<"Tapping water: "<<x<<endl; return 0; }