1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 配列活用メニュー(言語選択)
  4. 問題一覧 Rust(Beta)編
  5. 【配列に対しての複雑な処理】集団行動 Rust(Beta)編

配列活用メニューのアイコン
【配列に対しての複雑な処理】集団行動 Rust(Beta)編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

あなたは集団行動のリーダーです。次のような指示を出すことで様々な列の操作ができます。

swap A B
先頭から A 番目の人と、先頭から B 番目の人の位置を入れ替える。
reverse
列の前後を入れ替える。
resize C
先頭から C 人を列に残し、それ以外の人を全員列から離れさせる。ただし、列が既に C 人以下の場合、何も行わない。

初め、列には番号 1 〜 N の N 人がおり、先頭から番号の昇順に並んでいます。(1, 2 , 3, ..., N)
あなたの出した指示の回数 Q とその指示の内容 S_i (1 ≦ i ≦ Q) が順に与えられるので、全ての操作を順に行った後の列を出力してください。

入力される値

N Q
S_1
...
S_Q


・1 行目では、初めの列の人数 N と、指示の回数 Q が半角スペース区切りで与えられます。
・以降の N 行では指示の内容を表す S_i (1 ≦ i ≦ N) が与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

S_1
...
...


全ての操作を終えた後の列 S の生徒番号を先頭から順に改行区切りで出力してください。
また、出力の末尾には改行を入れてください。

条件

・1 ≦ N , Q ≦ 100
・S_i は、swap A B, reverse, resize C のいずれかの形式です。
・1 ≦ C ≦ N
・A, B はその時点で操作可能であるような生徒番号が与えられます。

入力例1

10 2
reverse
resize 7

出力例1

10
9
8
7
6
5
4

入力例2

100 5
resize 29
reverse
swap 18 24
resize 47
reverse

出力例2

1
2
3
4
5
12
7
8
9
10
11
6
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

問題一覧へ戻る

ページの先頭へ戻る