题面又长又难读,现场读题20分钟,最后也就只是过了13分的数据,搞人心态的一道题
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
vector<vector<int> > ans;
vector<int> st;
queue<int> a;
stack<int> hz;
int main()
{
int n,m,k;cin>>n>>m>>k;
for(int i=0;i<n;i++)
{
int x;cin>>x;
a.push(x);
}
int d;
while(hz.size() || a.size())
{
if(st.size()!=0) d=st.back();
else d=1e9;
if(hz.size() && hz.top()<=d)
{
st.push_back(hz.top());
hz.pop();
if((int)st.size()==k)
{
ans.push_back(st);
st.clear();
}
}
else if(a.size() && a.front()<=d)
{
st.push_back(a.front());
a.pop();
if((int)st.size()==k)
{
ans.push_back(st);
st.clear();
}
}
else if(a.size() && (int)hz.size()<m)
{
hz.push(a.front());
a.pop();
}
else
{
ans.push_back(st);
st.clear();
}
}
if(st.size())
{
ans.push_back(st);
st.clear();
}
for(auto &p:ans)
{
cout<<p[0];
for(int i=1;i<(int)p.size();i++)
cout<<" "<<p[i];
cout<<endl;
}
return 0;
}
|