難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Incremental Machine

作成者 kammyu

難易度(作成者設定) Lv.5

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

長さ NN の整数列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N) があり、はじめ、すべての要素は 00 で初期化されています。

数直線上を移動する機械があり、整数 xx を内部状態として持ちます。
はじめ、機械は座標 11 にあり、x=1x=1 です。

整数列 AA に対して以下のクエリを QQ 回処理します。

ii 番目のクエリでは、11 以上 NN 以下の整数 TiT_i が与えられます。
機械の座標が TiT_i になるまで以下を順に繰り返します。

  1. 機械の現在の座標を pp として、ApA_p に xx を加算する。
  2. xx に 11 を加算する。
  3. 機械が TiT_i に近づく方向に 11 進む。
    厳密に言えば、p<Tip<T_i ならば機械は座標 p+1p+1 に移動し、p>Tip>T_i ならば機械は座標 p−1p-1 に移動する。

クエリの開始時点で機械の座標が既に TiT_i である場合、そのクエリでは何も行いません。また、機械の座標と xx の値はクエリごとに初期化されず、次のクエリに引き継がれます。

すべてのクエリを処理した後の数列 AA を求めてください。

制約

  • 1≤N,Q≤2×1051\le N,Q\le2\times10^5
  • 1≤Ti≤N1\le T_i\le N
  • 入力は全て整数

入力

N QT1T2⋮TQ N\ Q\\ T_1\\ T_2\\ \vdots\\ T_Q\\

出力

全てのクエリを処理した後の整数列 A=(A1,A2,⋯ ,AN)A=(A_1,A_2,\cdots,A_N) を以下の形式で出力してください。

A1 A2 ⋯ ANA_1\ A_2\ \cdots\ A_N

入力例1

5 3
3
2
5

出力例1

1 6 8 6 0

機械はクエリ ii で次のように動きます。

  • i=1 (T1=3)i=1\ (T_1=3) : 1→2→31\to2\to3
  • i=2 (T2=2)i=2\ (T_2=2) : 3→23\to2
  • i=3 (T3=5)i=3\ (T_3=5) : 2→3→4→52\to3\to4\to5

この移動によって xx は次のように変化します。

  • i=1 (T1=3)i=1\ (T_1=3) : 1→2→31\to2\to3
  • i=2 (T2=2)i=2\ (T_2=2) : 3→43\to4
  • i=3 (T3=5)i=3\ (T_3=5) : 4→5→6→74\to5\to6\to7

同様に、AA は次のように変化します。

  • i=1 (T1=3)i=1\ (T_1=3) : (0,0,0,0,0)→(1,0,0,0,0)→(1,2,0,0,0)(0,0,0,0,0)\to(1,0,0,0,0)\to(1,2,0,0,0)
  • i=2 (T2=2)i=2\ (T_2=2) : (1,2,0,0,0)→(1,2,3,0,0)(1,2,0,0,0)\to(1,2,3,0,0)
  • i=3 (T3=5)i=3\ (T_3=5) : (1,2,3,0,0)→(1,6,3,0,0)→(1,6,8,0,0)→(1,6,8,6,0)(1,2,3,0,0)\to(1,6,3,0,0)\to(1,6,8,0,0)\to(1,6,8,6,0)

よって、最終的な結果である (1,6,8,6,0)(1,6,8,6,0) を出力してください。


入力例2

3 3
1
2
3

出力例2

1 2 0

機械が移動しないことや、前のクエリと同じ向きに移動することもあることに注意してください。


入力例3

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

出力例3

32 64 123 138 138 138 138 100 53 22