AtCoder Beginner Contest 276 C - Previous Permutation
N=int(input()) p=list(map(int,input().split())) def prev_permutation(a: list, l: int = 0, r: int = None) -> bool: if r is None: r = len(a) - 1 for i in range(r - 1, l - 1, -1): if a[i] > a[i + 1]: for j in range(r, i, -1): if a[i] > a[j]: a[i], a[j] = a[j], a[i] p, q = i + 1, r while p < q: a[p], a[q] = a[q], a[p] p += 1 q -= 1 return True return False prev_permutation(p) print(*p)
考え方
C++のprev_permutationの実装をする。
こちらのサイトの記事のコードをそのまま使わせていただいた。