P5788 莫名re
查看原帖
P5788 莫名re
450893
yangyuanxi44楼主2021/7/27 22:03
#include<bits/stdc++.h>
using namespace std;
stack<int>a;
int ans[3000005],a1[3000005];
int cnt;
int main(){
	memset(ans,0,sizeof(ans));
	int n;
	cin>>n;
	
	for(int i=1 ; i<=n ; i++){
		cin>>a1[i];
		cnt++;
		if(a.empty()) a.push(a1[i]);
		else{
			if(a.top()<a1[i]){
				
				while(a.top()<a1[i]&&!a.empty()){
					
				    if(a.top()<a1[i]&&!a.empty()){
					   ans[a.top()]=cnt;
					   a.pop();
				    }
				    
				    if(a.top()>a1[i]&&!a.empty()){
				    	a.push(a1[i]);
					    break;
					}
					
                    if(a.empty()){
					   a.push(a1[i]);
					   break;
				    } 
			    }
			}else a.push(a1[i]);
		}
	}
	for(int i=1 ; i<=n ; i++) cout<<ans[a1[i]]<<" ";
	return 0;
}

各位dalao,我感觉我也没访问空栈,谢谢

2021/7/27 22:03
加载中...