結果
問題 | No.1369 交換門松列・竹 |
ユーザー |
![]() |
提出日時 | 2021-11-12 03:05:46 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,467 bytes |
コンパイル時間 | 146 ms |
コンパイル使用メモリ | 82,272 KB |
実行使用メモリ | 81,820 KB |
最終ジャッジ日時 | 2024-11-24 04:45:57 |
合計ジャッジ時間 | 3,682 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 29 RE * 4 |
ソースコード
import sys# sys.setrecursionlimit(200005)int1 = lambda x: int(x)-1p2D = lambda x: print(*x, sep="\n")def II(): return int(sys.stdin.readline())def LI(): return list(map(int, sys.stdin.readline().split()))def LLI(rows_number): return [LI() for _ in range(rows_number)]def LI1(): return list(map(int1, sys.stdin.readline().split()))def LLI1(rows_number): return [LI1() for _ in range(rows_number)]def SI(): return sys.stdin.readline().rstrip()# dij = [(0, 1), (-1, 0), (0, -1), (1, 0)]# dij = [(0, 1), (-1, 0), (0, -1), (1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)]# inf = 18446744073709551615inf = 4294967295md = 10**9+7# md = 998244353def iskado(abc):a, b, c = abcif a == b or b == c or c == a: return Falseif a < b < c or a > b > c: return Falsereturn Truedef solve():def ok(i, j, lr0):res = Trueaa[i], aa[j] = aa[j], aa[i]s = max(0, min(i-2, lr0[0]))t = min(n, max(i, lr0[1]-2))for k in range(s, t):if not iskado(aa[k:k+3]):res = Falsebreakaa[i], aa[j] = aa[j], aa[i]return resn = II()aa = LI()lr = []l = r = -1for i in range(n-2):if iskado(aa[i:i+3]):if l != -1 and i >= r:lr.append((l, r))l = r = -1else:if l == -1: l, r = i, i+3else: r = i+3if r-l == 10: return Falseif l != -1: lr.append((l, r))if len(lr) > 2: return Falseif len(lr) == 2:for l, r in lr:if r-l > 5: return Falsefor i in range(lr[0][0], lr[0][1]):for j in range(lr[1][0], lr[1][1]):if not ok(i, j, lr[0]): continueif not ok(j, i, lr[1]): continuereturn Trueif len(lr) == 1:l, r = lr[0]if r-l > 5:for i in range(lr[0][0], lr[0][1]):for j in range(lr[0][0], i):if not ok(i, j, lr[0]): continueif not ok(j, i, lr[0]): continuereturn Trueelse:for i in range(lr[0][0], lr[0][1]):for j in range(n):if i == j: continueif not ok(i, j, lr[0]): continueif not ok(j, i, lr[0]): continuereturn Truereturn Falsefor _ in range(II()):print("Yes" if solve() else "No")