class Solution {
public:
int maxWidthRamp(vector<int>& nums) {
stack<int> stk;
int n = nums.size();
int res = 0;
for (int i = 0; i < n; i++) {
if (stk.empty() || nums[stk.top()] > nums[i])
stk.push(i);
}
for (int i = n - 1; i >= 0; i--) {
while (!stk.empty() && nums[i] >= nums[stk.top()]) {
res = max(i - stk.top(), res);
stk.pop();
}
}
return res;
}
};