B - Fill the Gaps Editorial by evima

原案者の実装

与えられた手順の代わりに次を行っても同じ出力が得られます。

  • \(A_1\) を出力する。
  • \(A_1 < A_2\) なら、\(A_1 + 1, A_1 + 2, \ldots, A_2 - 1\) をこの順に出力する。そうでないなら、\(A_1 - 1, A_1 - 2, \ldots, A_2 + 1\) をこの順に出力する。(\(A_2 - A_1 = \pm 1\) のときは何も出力されない。)
  • \(A_2\) を出力する。
  • 上と同様に、\(A_2\)\(A_3\) の間の数を出力する。
  • \(A_3\) を出力する。
  • \(\vdots\)
  • \(A_{N-1}\) を出力する。
  • 上と同様に、\(A_{N-1}\)\(A_N\) の間の数を出力する。
  • \(A_N\) を出力する。

実装例(Python)

N, A = int(input()), list(map(int, input().split()))
for i in range(N - 1):
    print(A[i], end=' ')
    if A[i] < A[i + 1]:
        for x in range(A[i] + 1, A[i + 1]):
            print(x, end=' ')
    else:
        for x in range(A[i] - 1, A[i + 1], -1):
            print(x, end=' ')
print(A[-1])

posted:
last update: