插松枝
插松枝
/*
1.松枝满了
下一枝
2.松枝没满
1.小盒子不空且满足要求
插上
2.推送器不空
1.满足要求
插上
2.不满足
1.盒子不满
丢入盒子
2.盒子满了
下一枝
1.如果插过了
cnt++记录(帮助判断松枝有没有满)
*/
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
stack<int> e;
queue<int> q;
int main()
{
// ios::sync_with_stdio(0);cin.tie(0);
cin>>n>>m>>k;
while(n--)
{
int x;
cin>>x;
q.push(x);
}
while(!q.empty()||!e.empty())
{
int cnt=0,st=1e9*2;
while(1)
{
if(cnt>=k)
{
break;
}
int flag=0;
if(!e.empty()&&e.top()<=st)
{
cout<<e.top()<<' ';
st=e.top();
e.pop();
flag=1;
}
else if(!q.empty())
{
while(!q.empty())
{
if(q.front()<=st)
{
cout<<q.front()<<' ';
st=q.front();
q.pop();
flag=1;
break;
}
if(e.size()>=m)
{
break;
}
e.push(q.front());
q.pop();
}
}
if(flag)
{
cnt++;
}
else break;
}
cout<<'\n';
}
return 0;
}