/
Time Limit: 1 sec / Memory Limit: 2048 MiB
配点 : 100 点 (部分点あり)
くろうさ「今年もゲームをしよう!」
しろうさ「いいよ!」
くろうさ「ゲーム 60 種類持ってきたよ」
しろうさ「つまらないの入ってそう」
くろうさ「お気に召したものだけ遊ぶのも歓迎!」
問題文
くろうさとしろうさがとあるゲームで対戦する.このゲームの状態は,「いくつかの皿が並んでいて,各皿の上にいくつかのキャンディが置かれている」という状況で表される.
このゲームは,与えられる整数 A \in \{0,1,2,3,4\},\, B \in \{0,1,2\},\, C \in \{0,1\},\, D \in \{0,1\} によって,以下のルールが指定される.詳細はそれぞれ後述される.
- A は操作を定める.操作とは,ある 1 枚の皿に対してそれを変化させることである.
- B は行動を定める.行動は,いくつかの操作を同時にすることを指す.くろうさが先手・しろうさが後手で,くろうさとしろうさは交互に行動をする.
- C は終了を定める.ゲームが終了する条件を表す.
- D は勝敗を定める.ゲームが終了したときくろうさとしろうさの一方が勝ちとなり他方が負けとなる.
このゲームの初期状態が T 個指定される.各初期状態は,皿の枚数 N と各皿に置かれているキャンディの個数 X_1, X_2, \ldots, X_N によって与えられる.各初期状態について独立に,くろうさとしろうさのどちらに必勝法があるか判定せよ.
操作
キャンディが x 個置かれている皿に対する操作を以下で定める.いずれの場合も,皿に置かれているより多くのキャンディを取ることはできない.また,食べたキャンディはなくなる.
- A = 0 のとき,1 個以上のキャンディを取って食べる.
- A = 1 のとき,1 個以上 3 個以下のキャンディを取って食べる.
- A = 2 のとき,1 個以上 \left\lfloor \dfrac{1}{2} x \right\rfloor 個以下のキャンディを取って食べる.
- A = 3 のとき,
- x が 17 の倍数であるとき,ちょうど 1 個のキャンディを取って食べる.
- x が 17 の倍数でないとき,1 個以上 2 個以下のキャンディを取って食べる.
- A = 4 のとき,1 個以上 x-1 個以下のキャンディを取り,新しい皿を 1 枚用意してそこに置く (皿の枚数が増える).
行動
行動を以下で定める.
- B = 0 のとき,ちょうど 1 枚の皿を選んで,操作をする (可能な操作が存在しない皿は選べない).
- B = 1 のとき,1 枚以上の皿を選んで,それぞれに対して操作をする (可能な操作が存在しない皿は選べない).
- B = 2 のとき,可能な操作が存在するような皿をすべて選んで,それぞれに対して操作をする (可能な操作が存在しない皿は無視する).
終了
ゲームが終了する条件を以下で定める.
- C = 0 のとき,すべての皿に対して,可能な操作が存在しないとき,ゲームを終了する.
- C = 1 のとき,ある皿に対して,可能な操作が存在しないとき,ゲームを終了する.
勝敗
ゲームが終了したとき,次の手番が誰か (次に行動するはずだったのは誰か) によって,勝敗の判定を以下で定める.
- D = 0 のとき,次の手番の方が負けとなり,他方が勝ちとなる.
- D = 1 のとき,次の手番の方が勝ちとなり,他方が負けとなる.
制約
- A \in \{0,1,2,3,4\}.
- B \in \{0,1,2\}.
- C \in \{0,1\}.
- D \in \{0,1\}.
- 1 \le T \le 10^4.
- 各初期状態について,1 \le N \le 50.
- 各初期状態について,1 \le X_i \le 5 \times 10^5 (1 \le i \le N).
部分点
- a \in \{0,1,2,3,4\},\, b \in \{0,1,2\},\, c \in \{0,1\},\, d \in \{0,1\} を満たす各組 (a, b, c, d) に対し,(A, B, C, D) = (a, b, c, d) を満たすデータセットに正解した場合は,それぞれ d + 1 点が与えられる.データセット名は,
Setの後の 4 個の数字が順に a, b, c, d を表す. - 追加制約のないデータセットに正解した場合は,上記とは別に 10 点が与えられる.データセット名は
Allである.
入力
標準入力の 1 行目に,まず A, B, C, D, T が以下の形式で与えられる.
A B C D T
その後,T 個の初期状態がそれぞれ以下の形式で与えられる.
N X_1 X_2 \cdots X_N
出力
各初期状態について順番に 1 行ずつ,くろうさに必勝法がある場合は Black,しろうさに必勝法がある場合は White を 1 行に出力せよ.
入力例 1
2 0 0 0 2 2 5 6 3 6 10 12
出力例 1
Black White
1 個目の初期状態について考える.皿を入力の順に皿 1, 2 と呼ぶ.くろうさの最初の手番にできる行動は,以下の 5 通りである:
- 皿 1 から 1 個のキャンディを取って食べる.
- 皿 1 から 2 個のキャンディを取って食べる.
- 皿 2 から 1 個のキャンディを取って食べる.
- 皿 2 から 2 個のキャンディを取って食べる.
- 皿 2 から 3 個のキャンディを取って食べる.
くろうさの必勝法として,最初の手番で行動「皿 2 から 1 個のキャンディを取って食べる」をするものが存在することが証明できる.
入力例 2
3 1 1 0 2 3 15 15 20 2 1 17
出力例 2
White Black
2 個目の初期状態について考える.皿を入力の順に皿 1, 2 と呼ぶ.くろうさの最初の手番にできる行動は,以下の 3 通りである:
- 皿 1 から 1 個のキャンディを取って食べる.
- 皿 2 から 1 個のキャンディを取って食べる.
- 皿 1 から 1 個のキャンディを取って食べ,同時に,皿 2 から 1 個のキャンディを取って食べる.
くろうさが行動「皿 1 から 1 個のキャンディを取って食べ,同時に,皿 2 から 1 個のキャンディを取って食べる」をすると,皿 1 のキャンディが 0 個,皿 2 のキャンディが 16 個になる.このとき皿 1 にはもう可能な操作が存在しないので,ゲームが終了し,くろうさの勝ちとなる.
入力例 3
4 2 0 1 3 1 1 1 2 3 7 11 9
出力例 3
Black White White
1 個目の初期状態においては,唯一の皿に対し可能な操作が存在しないので,初期状態でゲームが終了し,くろうさの勝ちとなる.
2 個目の初期状態においては,できる行動は「唯一の皿から 1 個のキャンディを取り,新しい皿を 1 枚用意してそこに置く」のみである.くろうさがこの行動をすると,2 枚の皿とも可能な操作が存在しなくなるので,ゲームが終了し,しろうさの勝ちとなる.
3 個目の初期状態においては,皿を入力の順に皿 1, 2, 3 と呼ぶと,できる行動の例として「同時に,皿 1, 2, 3 からそれぞれ 1, 10, 4 個のキャンディを取り,新しい皿をそれぞれ 1 枚用意して (皿 1', 2', 3' と呼ぶ) そこに置く」というものが考えられる.くろうさがこの行動をすると,しろうさの手番では,皿 1, 1', 2, 2', 3, 3' があり,キャンディがそれぞれ 6, 1, 1, 10, 5, 4 個置かれている状態になる.このときしろうさの行動では,皿 1, 2', 3, 3' に対して操作を行う.