http://abc066.contest.atcoder.jp/tasks/arc077_a
解法
http://abc066.contest.atcoder.jp/submissions/1397311
dequeを使ってシミュレートする。
1. 後ろに入れる
2. 上下逆転させる
を繰り返す操作は、「後ろに入れる->前に入れる->後ろに入れる->前に入れる->…」に相当する。
dequeで後ろ、前、後ろ、前でやっていけばいい。
取り出す時は、Nが偶数なら上下は普通に戻っているので、先頭から取り出す。
そうでないなら、上下逆転している状態で終わっているので、後ろから取り出す。
int N, A[201010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; deque<int> deq; rep(i, 0, N) { if (i % 2 == 0) deq.push_back(A[i]); else deq.push_front(A[i]); } rep(i, 0, N) { if (0 < i) printf(" "); int x; if (N % 2 == 0) x = deq.front(), deq.pop_front(); else x = deq.back(), deq.pop_back(); printf("%d", x); } printf("\n"); }