原题链接
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,ans;
while(scanf("%d",&n)!=EOF){
stack<int> s; //栈s里面放的是现在能看到的山
ans=0;
for(int i=1;i<=n;i++){
int now_h;
scanf("%d",&now_h); //输入现在所在高度
ans += s.size(); //回头看能看到多少座山
while(!s.empty()){
if(now_h>s.top()) //如果现在山峰比之前的要高,那么要弹出该山峰,继续向前寻找
s.pop();
else //如果现在山峰比不比之前的高,跳出
break;
}
s.push(now_h);
}
printf("%d\n",ans);
}
}