首页 > 360笔试第二题,默认N是偶数通过91%
头像
馄饨馄饨
编辑于 2020-08-22 21:31
+ 关注

360笔试第二题,默认N是偶数通过91%

#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;

//分奇数偶数队列
//默认N是偶数, 过了0.91的样例
int main() {
	int N, M;
	cin >> N >> M;
	vector<int> operation;
	queue<int> a, b;
	int m;
	for (int i = 0; i < M; i++) {
		cin >> m;
		operation.push_back(m);
	}
	for (int j = 1; j <= N; j++) {
		if (j % 2 == 1) {
			a.push(j);
		}
		else {
			b.push(j);
		}
	}   //按奇数偶数分成两个队列
	int flag = 0;  //flag用于判断最后交替输出时先输出哪一个队列
	int mark;
	for (int ope : operation) {
		if (ope == 1) { //操作一就把当前优先输出队列的第一个数移到最后
			if (flag == 0) {
				mark = a.front();
				a.pop();
				a.push(mark);
			}
			else {
				mark = b.front();
				b.pop();
				b.push(mark);
			}
		}
		flag = 1 - flag;  //如果是操作二,只需要交换交替输出先后位置
	}
	for (int kk = 0; kk < N / 2; kk++) {
		if (flag == 0) {
			cout << a.front() << ' ' << b.front() << ' ';
		}
		else {
			cout << b.front() << ' ' << a.front() << ' ';
		}
		a.pop();
		b.pop();
	}
	cout << endl;
	return 0;
}

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐