Atcoder B - Collecting Balls (Easy Version) Java

問題文

平面上に 個のボールがあります。このうち 番目のボールの位置は です。 したがって、 本の直線 , , , の上にそれぞれ

個ずつボールがあることになります。

すぬけ君は、これらのボールを回収するために、タイプ A, B のロボットを

台ずつ用意しました。 さらに、タイプ A のロボットのうち 台目のものを位置 に、タイプ B のロボットのうち 台目のものを位置 に設置しました。 したがって、 本の直線 , , , の上にそれぞれ 台のタイプ A のロボットと、

台のタイプ B のロボットが設置されたことになります。

それぞれのタイプのロボットは起動されると以下のように動作します。

  • タイプ A のロボットは、位置

で起動されると、直線 上にあるボールの位置まで移動し、ボールを回収してもとの位置

  • に戻って停止する。そのようなボールが存在しない場合は何もせずに停止する。
  • タイプ B のロボットは、位置

で起動されると、直線 上にあるボールの位置まで移動し、ボールを回収してもとの位置

 

  • に戻って停止する。そのようなボールが存在しない場合は何もせずに停止する。

これら

台のロボットのうちいくつかを起動してボールをすべて回収するとき、ロボットの移動距離の総和として考えられる値のうち最小のものを求めてください。

 

import java.util.Scanner;
import java.util.*;

public class Main {

public static void main(String args) {

Scanner sc = new Scanner(System.in);

int loop;
int target = 0;

loop = sc.nextInt();
target = sc.nextInt();

int arr = new int [loop];

for(int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}

int sum = 0;
for(int i = 0; i < arr.length; i++) {

if(arr[i] * 2 < (target - arr[i]) * 2) {
sum += arr[i] * 2;
} else {
sum += (target - arr[i]) * 2;
}
}

System.out.println(sum);

}
}