このページについて

このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。

見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。

挑戦する課題

レベルアップ問題集配列活用メニューから「【配列に対しての複雑な処理】集団行動 (paizaランク C 相当)」を取り上げます。

以下は、問題公開 Web ページからの引用です。

問題

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

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

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

入力される値

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

期待する出力

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

考え方

執筆中

解答例