結果

問題 No.334 門松ゲーム
ユーザー noriocnorioc
提出日時 2024-07-16 23:48:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 353 ms / 2,000 ms
コード長 825 bytes
コンパイル時間 320 ms
コンパイル使用メモリ 81,796 KB
実行使用メモリ 76,312 KB
最終ジャッジ日時 2024-07-16 23:48:05
合計ジャッジ時間 3,283 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
53,168 KB
testcase_01 AC 39 ms
51,936 KB
testcase_02 AC 353 ms
75,804 KB
testcase_03 AC 37 ms
51,808 KB
testcase_04 AC 38 ms
52,264 KB
testcase_05 AC 42 ms
57,872 KB
testcase_06 AC 109 ms
75,648 KB
testcase_07 AC 182 ms
76,048 KB
testcase_08 AC 91 ms
76,036 KB
testcase_09 AC 119 ms
75,964 KB
testcase_10 AC 308 ms
76,312 KB
testcase_11 AC 145 ms
76,156 KB
testcase_12 AC 71 ms
75,572 KB
testcase_13 AC 58 ms
70,684 KB
testcase_14 AC 345 ms
75,908 KB
testcase_15 AC 164 ms
75,472 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from itertools import combinations


def is_kadomatu(a: int, b: int, c: int) -> bool:
    if a == b or b == c or c == a: return False
    if a < b < c: return False
    if a > b > c: return False
    return True


# ゲームに勝つか。先手(turn=1)
def f(turn, used) -> bool:
    res = False
    for a, b, c in combinations(range(N), 3):
        if used[a] or used[b] or used[c]: continue
        if not is_kadomatu(A[a], A[b], A[c]): continue

        used[a] = used[b] = used[c] = turn
        res |= not f(turn+1, used)
        if res and turn == 1:
            return True
        used[a] = used[b] = used[c] = 0

    return res


N = int(input())
A = list(map(int, input().split()))

used = [0] * N
iswin = f(1, used)
if not iswin:
    print(-1)
    exit()

ans = [i for i in range(N) if used[i] == 1]
print(*ans)
0