理解题意就很好做
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,k;
cin>>n>>m>>k;
queue<int>tsq;
stack<int>xhz;
for(int i=0;i<n;i++){
int x;
cin>>x;
tsq.push(x);
}
while(1){
vector<int>temp;
int flag=0;
while(1){
if(temp.size()==0){
if(xhz.size()==0){
temp.push_back(tsq.front());
tsq.pop();
}
else{
temp.push_back(xhz.top());
xhz.pop();
}
}
else{
int ed=temp[temp.size()-1];
if(xhz.size()!=0&&xhz.top()<=ed){
temp.push_back(xhz.top());
xhz.pop();
}
else if(tsq.size()==0){
flag=1;
}
else if(tsq.size()!=0&&tsq.front()>ed){
if(xhz.size()==m){
flag=1;
}
else{
xhz.push(tsq.front());
tsq.pop();
}
}
else if(tsq.size()!=0&&tsq.front()<=ed){
temp.push_back(tsq.front());
tsq.pop();
}
}
if(temp.size()==k||flag==1){
printf("%d",temp[0]);
for(int i=1;i<temp.size();i++)
printf(" %d",temp[i]);
printf("\n");
break;
}
}
if(tsq.size()==0&&xhz.size()==0)
break;
}
return 0;
}