军训

来源:互联网 发布:剑三淘宝金币怎么买 编辑:程序博客网 时间:2024/04/28 09:55

实验任务

小 M 在大一军训时,遇到了一个奇怪的教官。这个教官提出了一个奇怪的要求。他让小M 班的同学们排成一队,然后他开始喊左边第 X 个或者右边第 X 个同学出列,按出列顺序排成新的一队。请根据原来的编号输出新的序列。

数据输入

输入第一行包括一个正整数 N(N<=10000),表示队伍人数。接下来 N 行,每行包括一个字母和一个 int 型整数 ai,字母 L 表示左边数起,字母 R 表示右边数起,数字 ai 表示第ai 个同学出列。 (0

数据输出

输出 N 个数字表示新队伍的同学对应的原编号的序列。

输入示例

5
L 3
R 3
L 3
L 2
R 1

输出示例

3 2 5 4 1

解题思路

见注释

参考代码

#include <iostream>  #include <cstdio>   #include <vector>  using namespace std;  int main()  {      int n,i;      while (~scanf("%d",&n)){          vector<int> v,que;          for (i = 1;i <= n;i++) //v中存 1,2,...,n             v.push_back(i);          char opr;          int num;          for (i = 1;i <= n;i++){              scanf(" %c%d",&opr,&num);              if (opr == 'L'){                  que.push_back(v[num-1]); //左边第num个加到新队列                 v.erase(v.begin()+num-1);  //删除v中对应的元素            }else if (opr == 'R'){                  que.push_back(v[v.size()-num]);                v.erase(v.end()-num);                             }          }          for (i = 0;i < n;i++)              printf("%d ",que[i]);          printf("\n");      }  }
0 0