atcoder#ABC250C. [ABC250C] Adjacent Swaps

[ABC250C] Adjacent Swaps

题目描述

N N 個のボールが左右一列に並んでいます。初め、左から i  (1  i  N) i\ \,\ (1\ \leq\ i\ \leq\ N) 番目のボールには整数 i i が書かれています。

高橋君は Q Q 回の操作を行いました。 i  (1  i  Q) i\ \,\ (1\ \leq\ i\ \leq\ Q) 回目に行われた操作は次のようなものです。

  • 整数 xi x_i が書かれているボールをその右隣のボールと入れ替える。ただし、整数 xi x_i が書かれているボールが元々右端にあった場合、代わりに左隣のボールと入れ替える。

操作後において左から i  (1  i  N) i\ \,\ (1\ \leq\ i\ \leq\ N) 番目のボールに書かれている整数を ai a_i とします。 a1,,aN a_1,\ldots,a_N を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N Q Q x1 x_1 \vdots xQ x_Q

输出格式

a1,,aN a_1,\ldots,a_N を空白区切りで出力せよ。

题目大意

【题意翻译】

NN 个球左右排成一列。开始,从左到右的第 i(1iN)i (1 \le i \le N) 个球写着整数 ii

高桥君进行了 QQ 回的操作。第 i(1iQ)i (1 \le i \le Q) 次操作如下:

  • jjNN 个球中写着整数 xix_i 的球的位置
  • 如果 j=Nj = N,将其与第 j1j - 1 个球交换;否则,与第 j+1j + 1 个球交换

求操作后的球上分别写着的数字(从左到右输出)。

【输入格式】

第一行为 NN, QQ.
i+1i+1 行为 aia_i.

【输出格式】

从左到右输出操作后的球上分别写着的数字.

5 5
1
2
3
4
5
1 2 3 5 4
7 7
7
7
7
7
7
7
7
1 2 3 4 5 7 6
10 6
1
5
2
9
6
6
1 2 3 4 5 7 6 8 10 9

提示

制約

  • 2  N  2 × 105 2\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • 1  Q  2 × 105 1\ \leq\ Q\ \leq\ 2\ \times\ 10^5
  • 1  xi  N 1\ \leq\ x_i\ \leq\ N
  • 入力は全て整数

Sample Explanation 1

操作は以下のように行われます。 - 1 1 と書かれたボールを右隣のボールと入れ替える。ボールに書かれた整数は左から 2,1,3,4,5 2,1,3,4,5 となる。 - 2 2 と書かれたボールを右隣のボールと入れ替える。ボールに書かれた整数は左から 1,2,3,4,5 1,2,3,4,5 となる。 - 3 3 と書かれたボールを右隣のボールと入れ替える。ボールに書かれた整数は左から 1,2,4,3,5 1,2,4,3,5 となる。 - 4 4 と書かれたボールを右隣のボールと入れ替える。ボールに書かれた整数は左から 1,2,3,4,5 1,2,3,4,5 となる。 - 5 5 と書かれたボールは右端にあるので左隣のボールと入れ替える。ボールに書かれた整数は左から 1,2,3,5,4 1,2,3,5,4 となる。