有趣的队列
本题重新定义队列出队的操作:队首出队的数字重新在队尾入队。
例:队列中有
1 2 3
三个数字,现要求队首出队,则1
从队首出队,同时1
从队尾入队,队列变成2 3 1
。入队的顺序为1,2,3,4......n,同时给一个二进制字符串,1代表出队操作,0代表入队操作。
输入格式:
在第一行有两个数字n,m(n<=100,n<m),其中n为入队的数字个数,m代表操作数
接下来m行,每行一个数字,1或者0,代表不同的操作
输出格式:
输出操作后队列的每个数字,数字间以空格分隔,最后一个数字后没有空格
输入样例:
5 8 0 0 1 0 1 0 1 0
输出样例:
3 2 4 1 5
代码长度限制
16 KB
时间限制
2000 ms
内存限制
1 MB
栈限制
8192 KB
#include <bits/stdc++.h>
using namespace std;
queue<int>q;
int main(){int n,m;cin>>n>>m;int x;int counts = 0;for(int i = 0;i < m; i++){cin>>x;if(x == 0){counts++;q.push(counts);}else{q.push(q.front());q.pop();}}for(int i = 0;i < n - 1; i++){cout<<q.front()<<" ";q.pop();}cout<<q.front();return 0;
}