10分单调栈求助
查看原帖
10分单调栈求助
836127
Oscar20100301楼主2024/4/9 17:21
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
long s[maxn],top=1;//栈和栈顶 
long ans=0; 
int main(){
	long n;
	cin>>n;
	cin>>s[1];
	for(int i=2;i<=n;++i){
		long k;
		bool flag=0;//后来是否有过弹出 
		cin>>k;
		if(k<s[top]) ans++;
		while(k>=s[top]&&top){
			top--;
			flag=true;
		}
		s[++top]=k;
		if(flag&&top) ans++;//如果有过弹出且没弹完说明还有看得见栈顶的元素 
	}
	
	cout<<ans;
	return 0;

本地和点一过了

2024/4/9 17:21
加载中...