結果
問題 |
No.241 出席番号(1)
|
ユーザー |
![]() |
提出日時 | 2025-05-05 12:35:07 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,505 bytes |
コンパイル時間 | 618 ms |
コンパイル使用メモリ | 82,248 KB |
実行使用メモリ | 54,592 KB |
最終ジャッジ日時 | 2025-05-05 12:35:12 |
合計ジャッジ時間 | 4,335 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 WA * 11 |
ソースコード
from itertools import permutations def main(): N = int(input()) A = [int(input()) for _ in range(N)] for i, a in enumerate(A): if a >= N: cands = list(range(N)) ans = [-1]*N for j, b in enumerate(A): if i == j: continue if cands[-1] == b: ans.append(cands.pop(-2)) else: ans.append(cands.pop()) ans[i] = cands.pop() return ans for a, b in zip(A, A[1:]): if a != b: break else: # 全て同じ番号なら return [-1] if N == 1: return [0] elif N == 2: if A[0] == 0: return [1, 0] else: return [0, 1] idx = [0] for i, a in enumerate(A): if not i: continue if a != A[0]: idx.append(i) break for i in range(N): if i not in idx: idx.append(i) break ans = [-1]*N cands = list(range(N)) for i in range(N): if i in idx: continue if cands[-1] == A[i]: ans[i] = cands.pop(-2) else: ans[i] = cands.pop() for s in permutations(idx): for i in range(3): if A[s[i]] == cands[i]: break else: for i in range(3): ans[s[i]] = cands[i] return ans print(*main(), sep="\n")