NISHIO Hirokazu[Translate]
ARC110C
from ARC110
C - Exoswap ARC110Fに関連問題

ARC110C
貪欲にやる
「1を先頭に持ってくるには」を考える
今いる位置から先頭まで持ってくる置換が必要不可欠
順番に先頭に持ってくる過程をやって、過不足が有ればNG
python
def solve(N, PS): ret = [] used = [False] * (N - 1) def swap(x): PS[x - 1], PS[x] = PS[x], PS[x - 1] used[x - 1] = True ret.append(x) for target in range(1, N): x = PS.index(target, target - 1) for i in range(x, target - 1, -1): if used[i - 1]: return [-1] swap(i) if False in used: return [-1] return ret

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]