結果
問題 |
No.1707 Simple Range Reverse Problem
|
ユーザー |
![]() |
提出日時 | 2025-06-30 22:26:04 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,501 bytes |
コンパイル時間 | 443 ms |
コンパイル使用メモリ | 82,344 KB |
実行使用メモリ | 62,200 KB |
最終ジャッジ日時 | 2025-06-30 22:26:07 |
合計ジャッジ時間 | 2,331 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 14 WA * 4 |
ソースコード
T = int(input()) ansl = [] for _ in range(T): N = int(input()) A = list(map(lambda x: int(x) - 1, input().split())) if N == 1: if A == [0, 0]: ansl.append('Yes') else: ansl.append('No') continue if N == 2: if A == [0, 1, 0, 1]: ansl.append('Yes') else: ansl.append('No') continue cnt = [0]*N for a in A: cnt[a] += 1 flag = True for i in range(N): if cnt[i] != 2: flag = False break if not flag: ansl.append('No') continue if A[0] != 0: ansl.append('No') continue # 前から見ていく flag = True for i in range(2*N): a = A[i] if i%N != a: left = i - 1 flag = False break # 初期版と同じ if flag: ansl.append('Yes') continue X = A[left] # 後ろから見る for i in range(2*N - 1, -1, -1): if A[i] == X: right = i break # left ~ right の間(両端は含まない)に注目 # right から遡る memo = 1 flag = True for i in range(right - 1, left, -1): if (X + memo)%N == A[i]: memo += 1 continue else: # 合わない flag = False break if flag: ansl.append('Yes') else: ansl.append('No') print(*ansl, sep='\n')