結果

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

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
52,220 KB
testcase_01 AC 37 ms
52,332 KB
testcase_02 AC 319 ms
75,880 KB
testcase_03 AC 36 ms
53,148 KB
testcase_04 AC 38 ms
53,748 KB
testcase_05 AC 40 ms
57,720 KB
testcase_06 AC 100 ms
75,808 KB
testcase_07 AC 170 ms
76,328 KB
testcase_08 AC 86 ms
75,576 KB
testcase_09 AC 115 ms
75,396 KB
testcase_10 AC 284 ms
76,196 KB
testcase_11 AC 136 ms
75,696 KB
testcase_12 AC 66 ms
75,704 KB
testcase_13 AC 56 ms
70,008 KB
testcase_14 AC 321 ms
75,564 KB
testcase_15 AC 155 ms
75,712 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


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 = []
for i in range(N):
    if used[i] == 1:
        ans.append(i)

print(*ans)
0