提交时间:2024-08-21 16:40:12

运行 ID: 180628

#include<iostream> #include<stack> using namespace std; typedef long long lld; int a[10100]; stack<int> s; int main(){ int n; cin>>n; for(int i = 0; i < n; i++) cin>>a[i]; lld ans = 0; for(int i = 0; i < n; i++){ while(!s.empty() && a[s.top()]<a[i]){ int l = s.top(); s.pop(); if(s.empty()){ break; } lld d = i-s.top()-1; int h = min(a[s.top()],a[i]); ans += d*(h-a[l]); } s.push(i); } cout<<ans; return 0; }