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

运行 ID: 180713

#include<bits/stdc++.h> using namespace std; int a[10005],n; stack<int> s; int main() { int i; long long ans=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0 ;i<n;i++) { while(!s.empty()&&a[s.top()]<a[i]) { int low=s.top(); s.pop(); if(s.empty()) break; long long dis=i-s.top()-1; int maxx=min(a[s.top()],a[i]); ans+=dis*(maxx-a[low]); } s.push(i); } printf("%lld",ans); return 0; }