#include <iostream>
#include <vector>
using namespace std;
int trap(vector<int>& height) {
if (height.empty()) return 0;
int left = 0, right = height.size() - 1;
int max_left = 0, max_right = 0;
int water_trapped = 0;
while (left <= right) {
if (height[left] <= height[right]) {
if (height[left] > max_left)
max_left = height[left];
else
water_trapped += max_left - height[left];
left++;
} else {
if (height[right] > max_right)
max_right = height[right];
else
water_trapped += max_right - height[right];
right--;
}
}
return water_trapped;
}
int main() {
vector<int> height = {0,1,0,2,1,0,1,3,2,1,2,1};
cout << trap(height) << endl; // Output: 6
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCB0cmFwKHZlY3RvcjxpbnQ+JiBoZWlnaHQpIHsKICAgIGlmIChoZWlnaHQuZW1wdHkoKSkgcmV0dXJuIDA7CiAgICAKICAgIGludCBsZWZ0ID0gMCwgcmlnaHQgPSBoZWlnaHQuc2l6ZSgpIC0gMTsKICAgIGludCBtYXhfbGVmdCA9IDAsIG1heF9yaWdodCA9IDA7CiAgICBpbnQgd2F0ZXJfdHJhcHBlZCA9IDA7CiAgICAKICAgIHdoaWxlIChsZWZ0IDw9IHJpZ2h0KSB7CiAgICAgICAgaWYgKGhlaWdodFtsZWZ0XSA8PSBoZWlnaHRbcmlnaHRdKSB7CiAgICAgICAgICAgIGlmIChoZWlnaHRbbGVmdF0gPiBtYXhfbGVmdCkKICAgICAgICAgICAgICAgIG1heF9sZWZ0ID0gaGVpZ2h0W2xlZnRdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB3YXRlcl90cmFwcGVkICs9IG1heF9sZWZ0IC0gaGVpZ2h0W2xlZnRdOwogICAgICAgICAgICBsZWZ0Kys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGhlaWdodFtyaWdodF0gPiBtYXhfcmlnaHQpCiAgICAgICAgICAgICAgICBtYXhfcmlnaHQgPSBoZWlnaHRbcmlnaHRdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB3YXRlcl90cmFwcGVkICs9IG1heF9yaWdodCAtIGhlaWdodFtyaWdodF07CiAgICAgICAgICAgIHJpZ2h0LS07CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gd2F0ZXJfdHJhcHBlZDsKfQoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8aW50PiBoZWlnaHQgPSB7MCwxLDAsMiwxLDAsMSwzLDIsMSwyLDF9OwogICAgY291dCA8PCB0cmFwKGhlaWdodCkgPDwgZW5kbDsgLy8gT3V0cHV0OiA2CiAgICByZXR1cm4gMDsKfQo=