提交时间:2024-08-21 16:38:23

运行 ID: 180624

#include <bits/stdc++.h> using namespace std; int height[10005], n; stack<int> st; int main() { cin >> n; for(int i = 0;i < n;i++) cin >> height[i]; long long ans = 0; for (int i = 0;i < n;i++) { while (!st.empty() && height[st.top()] < height[i]) { int low = st.top(); st.pop(); if (st.empty()) break; long long dist = i - st.top() - 1; int h = min(height[st.top()], height[i]); ans += dist * (h - height[low]); } st.push(i); } cout << ans << endl; return 0; }