提交时间:2024-04-06 11:30:20

运行 ID: 141825

#include<bits/stdc++.h> using namespace std; stack<long long>stk; stack<long long>num; int n; long long ans,tmp; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>tmp; while(!stk.empty() && stk.top() < tmp) { stk.pop(); ans += num.top(); num.pop(); } if(stk.empty()) { stk.push(tmp); num.push(1); } else { if(tmp != stk.top()) { ans+=1; stk.push(tmp); num.push(1); } else if(stk.size() == 1) { ans+=num.top(); int u = num.top(); num.pop(); num.push(u+1); } else { ans += num.top(); int u = num.top(); num.pop(); ans += 1; num.push(u+1); } } } printf("%lld\n",ans); return 0; }