H - Maximum vs Merin
問題文
Maximum 君と Merin ちゃんは経験値を獲得するべく、埼玉大学に生息するスライムを $Q$ 回に分けて討伐することにしました。
$i$ 回目の討伐では、$N_i$ 種類のスライムを討伐対象とし、 $j$ 種類目のスライムは体力が $H_{i,j}$ で $C_{i,j}$ 体存在します。
二人は以下の行動のうち 1 つを選んで行うことを交互に繰り返します。先手は Maximum 君です。
- スライムを 1 体選んで攻撃することで、スライムの体力を $d$ 減らす。ただし、二人が 1 回の攻撃で減らすことができる体力は最大で $D$ であり、 $d$ は $1 \leq d \leq D$ を満たす任意の整数である。
- スライムを 1 体選んで 2 体のスライムに分裂させる。ただし、分裂後のスライムの体力はともに正の整数であり、それらの和は元のスライムの体力に等しいものとする。
体力が 0 以下になったスライムは、その時点で倒されて消滅します。
討伐対象である最後の一体のスライムを倒した者だけが経験値を獲得できます。
各討伐において、両者が最適に行動した場合、経験値を取得できるのが Maximum 君であれば Maximum
、Merin ちゃんであれば Merin
と出力してください。
制約
- $1 \leq Q \leq 2 \times 10^5$
- $1 \leq D \leq 10^9$
- $1 \leq N_i \leq 2 \times 10^5$
- $1 \leq H_{i, j}, \ C_{i, j} \leq 10^9$
- $1 \leq \sum_{i=1}^{Q} N_i \leq 2 \times 10^5$
- 入力は全て整数である。
部分点
この問題はいくつかの小課題に分けられ、その小課題の全てのテストケースに正解した場合に、「この小課題に正解した」とみなされます。
提出したソースコードの得点は、正解した小課題の点数の合計となります。
- (20 点) $\sum_{i=1}^{Q} \sum_{j=1}^{N_i} H_{i,j} C_{i,j} \leq 30$ を満たす。
- (30 点) $1 \leq H_{i, j} \leq 1000$ を満たす。
- (50 点) 追加の制約はない。
入力
入力は以下の形式で標準入力から与えられる。
$Q \ D$
$Query_1$
$Query_2$
$:$
$Query_Q$
ただし、 $Query_i$ は $i$ 個目の討伐であり、以下のいずれかの形式で与えられる。
$N$
$H_1 \ C_1$
$H_2 \ C_2$
$\vdots$
$H_N \ C_N$
出力
Maximum 君が経験値を取得できるならば Maximum
、Merin ちゃんが経験値を取得できるならば Merin
を出力せよ。
1 2
2
1 2
3 1
Merin
両者が最適な行動を取った場合、入力の 1 つ目の討伐では Merin ちゃんが経験値を貰うことが可能です。
以下は行動の一例です。
- Maximum 君が体力 3 のスライムの体力を 1 減らす。体力 1 のスライムが 2 体, 体力 2 のスライムが 1 体になる。
- Merin ちゃんが体力 2 のスライムを体力 1 のスライム 2 体に分裂させる。体力 1 のスライムが 4 体になる。
- Maximum 君が体力 1 のスライムの体力を 1 減らす。攻撃されたスライムは倒され、体力 1 のスライムが 3 体になる。
- Merin ちゃんが体力 1 のスライムの体力を 1 減らす。攻撃されたスライムは倒され、体力 1 のスライムが 2 体になる。
- Maximum 君が体力 1 のスライムの体力を 1 減らす。攻撃されたスライムは倒され、体力 1 のスライムが 1 体になる。
- Merin ちゃんが体力 1 のスライムの体力を 1 減らす。攻撃されたスライムは倒され、全てのスライムが倒される。
よって、最後の一体を倒して経験値を貰えるのは Merin ちゃんです。
なお、この入力例は小課題 1, 2, 3 の制約を満たします。
1 100
3
12 23
30 12
98 5
Maximum
この入力例は小課題 2, 3 の制約を満たします。
2 4649
5
3728 9183
48932 2438927
43 84239882
4433483 4349
9859 963096
6
314159 83279
265358 502884
979323 197169
846264 399375
33832 105820
795028 974944
Merin
Maximum
この入力例は小課題 3 の制約を満たします。