|
イズミ |
結局、さっきのスイカ撃ちは誰が勝ったの? |
|
ヒフミ |
……え? と、止めたイズミさんがそれを言うんですか?! それより、その話を蒸し返しちゃだめです! |
|
アズサ |
確かに……決着はついていなかったな。 |
|
マシロ |
なるほど、うっかり見過ごすところを指摘してくれましたね。このまま曖昧に終わっては、正義実現委員会の名が泣きます! |
|
アズサ |
同感だ。明確な結論もなく戦場から退くのは、補習授業部の名を汚す行為だろう。 |
|
ヒフミ |
アズサちゃん?! 補習授業部の名前にそこまでの重みはないと思うんですけど?! |
|
|
実の配置
まず、射撃位置を中心とする円の上に、ヤシの実が個置かれている。は偶数のようだ。実はすべて等間隔に並んでいる。どれか1つを番とし、そこから反時計回りに順番に番、番、…、番と呼ぼう。
先生の使うプログラムには、仮想的な直線の軸、が定義されている。
1行目に、ヤシの実の数、サブクエリの数、クエリの数、最初に選択されている実の番号が空白区切りで与えられる。(、は偶数; ; ; )
先生が読み上げるヤシの実の番号を、順番に1行に1つずつ出力せよ。
クエリを処理する前と、5個のクエリを順番に1つずつ処理した後の、選択されている実と各サブクエリは下図のようになる。
先生が5番を読み上げることが分かる。
アズサ
|
ふむ。もう一度勝負したくても、スイカはもう使えないし……。 |
|
マシロ |
ならば、今度はスイカ以外のもので勝負しましょう! 例えば、あのヤシの実はいかがですか?! |
|
アズサ |
いいだろう。あれで決着をつけよう。 |
|
マシロ |
先生にプログラムで実の番号を読み上げてもらい、私たちはその実を撃つことで勝負しましょう。 |
|
アズサ |
頼む、先生。 |
ヒフミちゃんの期待に応えられるよう、頑張らないとな。……状況を整理してみよう。
実は円の上に等間隔に置かれているので、どの実についても、軸や軸に関して対称な位置には、必ずちょうど1つの別の実がある。
サブクエリ
先生が用意したプログラムには、番から番までの番号がついた、計個のサブクエリがある。各サブクエリは、現在選択されている実をどの実に変更するかを表す命令で、次の4つの形式のいずれかだ。
移動は円環状につながっている。反時計回りに個分進むと、番の実からは番の実に戻り、それ以外では番から番へ移動する。同様に、時計回りに個分進むと、番からは番へ、それ以外では番から番へ移動する。
……だが、先生はサブクエリを1つずつ実行するだけではないようだ。
クエリ
この個のサブクエリを実行したり、その内容自体を変更したりするため、プログラムにはさらに個のクエリがある。各クエリは次の2種類のいずれかだ。
1 i j: 番から番までのサブクエリを、番号の小さい順にすべて実行する。
2 i j q または 2 i j q a: 番から番までのサブクエリを、すべて同じサブクエリに書き換える。
最初は番のヤシの実が選択されているらしい。この状態から、個のクエリを先頭から順番に処理する。1 i j のクエリが終わるたびに、先生はその時点で選択されている実の番号を読み上げる。
各 1 i j クエリの終了後は、新たに選択された実をそのまま選択した状態で、次のクエリを実行することに注意しよう。
目標
うん、分かった。結局、知りたいことはただ1つ。
「先生が読み上げるヤシの実の番号は、順番に何になるだろう?」
先に番号が分かっていれば有利なはずだ。与えられたすべてのクエリをそのまま実行したときの番号を、順に求めよう。
2行目から行目には、番から番までのサブクエリが、番号順に1行ずつ与えられる。各行は次の2つの形式のいずれかである。
続く行目から行目には、クエリが実行順に1行ずつ与えられる。各行は次の3つの形式のいずれかである。; ;
タイプのクエリは少なくとも1回与えられる。