[ABC074B] Collecting Balls (Easy Version)
题意翻译
有一个N*K的平台,每一行0和K的坐标上都有一个机器人,第i行有一个位于坐标xi的球。机器人收到启动指令之后,如果该行还有球,就移动到球的位置,捡起球,再回到原来的位置;如果该行的球被另一个机器人抢了,就原地不动。请你安排2*N个机器人的启动顺序,使得机器人总移动距离最短。
输入
一行一个整数N。
一行一个整数K。
一行N个整数x_1~x_n。
输出
一行一个整数,最短移动距离。
数据范围
1<=N<=100
1<=K<=100
0<x_i<K
输入数据都是整数。
Translated by @yyhhenry
题目描述
[problemUrl]: https://atcoder.jp/contests/abc074/tasks/abc074_b
$ xy $ 平面上に $ N $ 個のボールがあります。このうち $ i $ 番目のボールの位置は $ (x_i,\ i) $ です。 したがって、$ N $ 本の直線 $ y\ =\ 1 $, $ y\ =\ 2 $, $ ... $, $ y\ =\ N $ の上にそれぞれ $ 1 $ 個ずつボールがあることになります。
すぬけ君は、これらのボールを回収するために、タイプ A, B のロボットを $ N $ 台ずつ用意しました。 さらに、タイプ A のロボットのうち $ i $ 台目のものを位置 $ (0,\ i) $ に、タイプ B のロボットのうち $ i $ 台目のものを位置 $ (K,\ i) $ に設置しました。 したがって、$ N $ 本の直線 $ y\ =\ 1 $, $ y\ =\ 2 $, $ ... $, $ y\ =\ N $ の上にそれぞれ $ 1 $ 台のタイプ A のロボットと、$ 1 $ 台のタイプ B のロボットが設置されたことになります。
それぞれのタイプのロボットは起動されると以下のように動作します。
- タイプ A のロボットは、位置 $ (0,\ a) $ で起動されると、直線 $ y\ =\ a $ 上にあるボールの位置まで移動し、ボールを回収してもとの位置 $ (0,\ a) $ に戻って停止する。そのようなボールが存在しない場合は何もせずに停止する。
- タイプ B のロボットは、位置 $ (K,\ b) $ で起動されると、直線 $ y\ =\ b $ 上にあるボールの位置まで移動し、ボールを回収してもとの位置 $ (K,\ b) $ に戻って停止する。そのようなボールが存在しない場合は何もせずに停止する。
これら $ 2N $ 台のロボットのうちいくつかを起動してボールをすべて回収するとき、ロボットの移動距離の総和として考えられる値のうち最小のものを求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ K $ $ x_1 $ $ x_2 $ $ ... $ $ x_N $
输出格式
ロボットの移動距離の総和として考えられる値のうち最小のものを出力せよ。
输入输出样例
输入样例 #1
1
10
2
输出样例 #1
4
输入样例 #2
2
9
3 6
输出样例 #2
12
输入样例 #3
5
20
11 12 9 17 12
输出样例 #3
74
说明
### 制約
- $ 1≦N≦100 $
- $ 1≦K≦100 $
- $ 0\ <\ x_i\ <\ K $
- 入力値はすべて整数である。
### Sample Explanation 1
ボールが $ 1 $ 個だけあり、タイプ A および B のロボットが $ 1 $ つずつあります。 タイプ A のロボットを用いてボールを回収すると、ボールの位置までの移動距離は $ 2 $ であり、もとの位置に戻るための移動距離も $ 2 $ であるので、合計の移動距離は $ 4 $ となります。 同様にタイプ B のロボットを用いてボールを回収したときの移動距離の合計を計算すると $ 16 $ となります。 よって、タイプ A のロボットを用いて回収すると合計の移動距離が最小となり、そのときの移動距離である $ 4 $ を出力します。
### Sample Explanation 2
$ 1 $ つめのボールはタイプ A のロボットで、$ 2 $ つめのボールはタイプ B のロボットで回収すると移動距離が最小となります。