113AC - ABC066C: pushpush

ABC066-C (300 points)
問題

数列  \{ a_1, a_2, \ldots , a_N \} が与えられたとき, 以下の操作によってできる数列  b を求める.
 i 回目の操作で

  1.  a_i b の末尾に追加する.
  2.  b を逆向きに並び替える.
  •  b の初期値は空の数列.
  •  1 \leq n \leq 200,000
  •  0 \leq a_i \leq 10^9
方針
  • 実験すると法則性が見えてくる
  • 数列 b の左端は  a_n, 右端は  a_{n - 2}
  • 中心に向かって添字が左右から  2 ずつ減っていく.
  •  n の偶奇で真ん中の  a_0, a_1 の並び順が変わることに注意.
# input
n = int(input())
A = list(map(int, input().split()))

for i in range(n - 1, (n + 1) % 2 - 1, -2):
    print(A[i], end = " ")
for j in range(n % 2, n - 1, 2):
    print(A[j], end = " ")