結果
| 問題 |
No.1506 Unbalanced Pocky Game
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-28 19:38:18 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 82 ms / 2,000 ms |
| コード長 | 1,351 bytes |
| コンパイル時間 | 179 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 101,248 KB |
| 最終ジャッジ日時 | 2024-09-30 14:50:34 |
| 合計ジャッジ時間 | 6,401 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 63 |
ソースコード
def main():
N = int(input())
A = list(map(int, input().split()))
# [2]
# [0]にすれば勝ち
# [2,3]
# [2,1]→[2,0]→[0,0]で勝ち
# これが成り立たないのは、[2,1]のように自分に末尾1が回ってきたとき
#
# 1が偶数個連続しているところは取れる操作が確定するし
# 手番が戻ってくるだけなので無視してよい
# 1は連続しないようにできる
# もし末尾を除いた要素が手番の人の勝ちなら、末尾を1にして渡せば勝ち盤面で手番が戻ってくる
# もし末尾を除いた要素が手番の人の負けなら、末尾を0にして渡せば相手が負けるので勝ち
# つまり末尾要素が2以上で、要素数が2以上なら絶対に勝ち
# 末尾要素が1のときは、残り要素が勝ちなら自分の負け、負けなら自分が勝ち
is_alice_win = True
while A:
if len(A) == 1:
if is_alice_win:
print("Alice")
else:
print("Bob")
return
if A[-1] > 1:
if is_alice_win:
print("Alice")
else:
print("Bob")
return
A.pop()
is_alice_win = not is_alice_win
if __name__ == "__main__":
main()