提交时间:2024-08-21 17:02:27

运行 ID: 180646

#include <bits/stdc++.h> using namespace std; int height[10005],n; stack<int> st; int main() { scanf("%d",&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); } printf("%lld\n",ans); return 0; }