結果
問題 |
No.1369 交換門松列・竹
|
ユーザー |
![]() |
提出日時 | 2025-06-12 13:59:21 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,397 bytes |
コンパイル時間 | 498 ms |
コンパイル使用メモリ | 82,352 KB |
実行使用メモリ | 80,996 KB |
最終ジャッジ日時 | 2025-06-12 13:59:25 |
合計ジャッジ時間 | 3,575 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 13 WA * 20 |
ソースコード
import sys def is_valid_torii(a, b, c): if a == b or b == c or a == c: return False if (b > a and b > c) or (b < a and b < c): return True return False def main(): input = sys.stdin.read().split() ptr = 0 T = int(input[ptr]) ptr += 1 for _ in range(T): N = int(input[ptr]) ptr +=1 A = list(map(int, input[ptr:ptr+N])) ptr +=N bad_triplets = [] for x in range(N-2): a = A[x] b = A[x+1] c = A[x+2] if (a < b and b < c) or (a > b and b > c): bad_triplets.append(x) if not bad_triplets: print("Yes") continue swaps = set() for x in bad_triplets: swaps.add((x, x+1)) swaps.add((x+1, x+2)) found = False for (i, j) in swaps: if i > j: i, j = j, i all_bad_fixed = True for x in bad_triplets: a = A[x] b = A[x+1] c = A[x+2] if x == i or x == j or x+1 == i or x+1 == j or x+2 == i or x+2 == j: new_a = A[x] if x == i: new_a = A[j] elif x == j: new_a = A[i] new_b = A[x+1] if x+1 == i: new_b = A[j] elif x+1 == j: new_b = A[i] new_c = A[x+2] if x+2 == i: new_c = A[j] elif x+2 == j: new_c = A[i] if not is_valid_torii(new_a, new_b, new_c): all_bad_fixed = False break if not all_bad_fixed: continue x_start_i = max(0, i-2) x_end_i = min(i, N-3) x_start_j = max(0, j-2) x_end_j = min(j, N-3) affected_x = set() for x in range(x_start_i, x_end_i +1): affected_x.add(x) for x in range(x_start_j, x_end_j +1): affected_x.add(x) all_affected_valid = True for x in affected_x: a = A[x] b = A[x+1] c = A[x+2] new_a = A[x] if x == i: new_a = A[j] elif x == j: new_a = A[i] new_b = A[x+1] if x+1 == i: new_b = A[j] elif x+1 == j: new_b = A[i] new_c = A[x+2] if x+2 == i: new_c = A[j] elif x+2 == j: new_c = A[i] if not is_valid_torii(new_a, new_b, new_c): all_affected_valid = False break if all_affected_valid: found = True break if found: print("Yes") else: print("No") if __name__ == "__main__": main()