代码(带思路注释):
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,c,top=0;//多少个数,栈大小,栈顶指针
cin>>n>>c;//输入
long long a[n+1],st[c+1];存数数组和栈
for(int i=1;i<=n;i++)cin>>a[i];//输入
int i=1;
while(i<=n){
if(top==0||a[i]<=st[top]){//如果栈为空或入栈的数小于等于栈顶元素,则入栈
top++;
if(top>c){
top--;
cout<<st[top]<<" ";
}st[top]=a[i];
i++;
continue;
}else{//否则出栈
cout<<st[top]<<" ";
top--;
}
}while(top){//清空栈
cout<<st[top]<<" ";
top--;
}return 0;
}
测试点情况:
AC:1,2,4,5,11;
其余WA。
求大佬揪错!!谢谢。