結果
問題 |
No.1707 Simple Range Reverse Problem
|
ユーザー |
|
提出日時 | 2025-09-20 13:20:17 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 66 ms / 2,000 ms |
コード長 | 1,230 bytes |
コンパイル時間 | 344 ms |
コンパイル使用メモリ | 82,508 KB |
実行使用メモリ | 67,456 KB |
最終ジャッジ日時 | 2025-09-20 13:20:20 |
合計ジャッジ時間 | 2,777 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 19 |
ソースコード
# https://yukicoder.me/problems/no/1707 def same(X, A): for i in range(len(X)): if X[i] != A[i]: return False return True def solve(N, A): X = [i + 1 for i in range(N)] X = X + X # まず集合として一致する? X_ = X.copy() A_ = A.copy() X_.sort() A_.sort() for i in range(2 * N): if X_[i] != A_[i]: return "No" # 並び替えないで一致する? if same(X, A): return "Yes" tmp = [0] *(2 * N) for j in range(N): for k in range(j + 1, j + N): x = k - (j + 1) tmp[k] = X[j + N - 1 - x] for k in range(j + 1, j + N): X[k] = tmp[k] if same(X, A): return "Yes" for k in range(j + 1, j + N): x = k - (j + 1) tmp[k] = X[j + N - 1 - x] for k in range(j + 1, j + N): X[k] = tmp[k] return "No" def main(): T = int(input()) answers = [] for _ in range(T): N = int(input()) A = list(map(int, input().split())) ans = solve(N, A) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()