实验任务
春节到了,大家急着排队买车票,但是有些人却喜欢插队。
数据输入
第一行 N,代表有 N 个操作。(N <= 1000)
接下来 N 行,每行一个操作。
第 i 行的操作有两种格式。(i 的值从一开始)
0 表示编号为 i 的人插入到排队队列的末尾。
1 x 表示编号为 i 的人插队到编号为 x 的人的前面。
数据输出
输出只有一行,按顺序输出队列中的人的编号。
输入示例
5
0
0
1 1
1 2
0
输出示例
3 1 4 2 5
解题思路
使用vector中的insert成员函数实现较方便。
参考代码
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 1010;
int main()
{
int n,i,d,opr;
while (~scanf("%d",&n)){
vector<int> num;
for (i = 1;i <= n;i++){
scanf("%d",&opr);
if (opr == 0){
num.push_back(i);
}else{
scanf("%d",&d);
vector<int>::iterator iter = find(num.begin(),num.end(),d);
num.insert(iter,i);
}
}
for (i = 0;i < n-1;i++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
return 0;
}