题目: NC14893 栈和排序 ,哈哈,我们今天来看一道比较简单的数据结构题嘛,这是选自牛客上的一道题,好了,我们一起来看看题意吧:
考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: NC14893 栈和排序
思路
:
维护一个后缀最大值数组,就比较方便求了,具体的我们直接看代码!
我们来看看成功AC的代码吧:
#include<bits/stdc++.h> using namespace std; const int N=1000010; int n; int maxn[N],a[N]; stack<int> st; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=n;i>=1;i--) maxn[i]=max(a[i],maxn[i+1]);//维护后缀最大值 for(int i=1;i<=n;i++){ st.push(a[i]); while(!st.empty()&&st.top()>maxn[i+1]) { cout<<st.top()<<" "; st.pop(); } } while(!st.empty()){//处理剩下的 cout<<st.top()<<" "; st.pop(); } return 0; }