atcoder#ARC073D. [ARC073F] Many Moves

[ARC073F] Many Moves

配点 : 900900

問題文

NN 個のマスが一列に並んでいます。マスには順に 1,2,...,N1, 2, ..., N と番号を振ってあるものとします。

あなたはコマを 22 つ持っており、最初の時点ではマス AA, BB においてあります。

以下のクエリがQQ 個与えられるので、順番に処理します。

  • xix_i が与えられる。22 つのコマのどちらかをマス xix_i に移動させる。どちらを移動させるかは好きに選んで良い。

ただし、コマは 11 マス分動くのに 11 秒の時間を必要とします。 つまり、マス XX のコマをマス YY に動かすには XY|X-Y| 秒必要です。

あなたの目的は、出来る限り速く全てのクエリを処理することです。

なお、クエリ以外でのコマの移動は許されません。 また、クエリの順番を並び替えたり、コマを 22 個同時に動かしたりすることも許されません。 ただし、22 個のコマが同時に同じマスにいることは許されます。

制約

  • 1N,Q200,0001 \leq N, Q \leq 200,000
  • 1A,BN1 \leq A, B \leq N
  • 1xiN1 \leq x_i \leq N

入力

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

NN QQ AA BB

x1x_1 x2x_2 ... xQx_Q

出力

全てのクエリを処理するのにかかる最小の時間を XX 秒として、XX を出力する。

8 3 1 8
3 5 1
7
  • マス 11 のコマをマス 33 に動かす
  • マス 88 のコマをマス 55 に動かす
  • マス 33 のコマをマス 11 に動かす

この通りにコマを動かすと 77 秒で全てのクエリを処理できます。

9 2 1 9
5 1
4

最初に動かすべきはマス 99 のコマです。

9 2 1 9
5 9
4

最初に動かすべきはマス 11 のコマです。

11 16 8 1
1 1 5 1 11 4 5 2 5 3 3 3 5 5 6 7
21