Problem:
鉄道路線II

わたしの住む街には、図のような N 個の駅からなる円環状の鉄道路線があります。この路線の各駅には 0 から N-1 までの番号が順番に割り当てられていて、隣の駅まで100 円で移動することができます。移動はどちらの方向にでも可能です。

わたしはこの路線上のいくつかの駅で買い物をしたいと思っています。そこで、プログラムを作成して移動費を計算することにしました。ある駅を始点として、買い物をするすべての駅を訪問する最小の費用（円）を求めるプログラムを作成してください。ただし、同じ駅を何度訪問しても良く、どのような順番で駅を訪問しても構いません。

入力

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

N M p
d1
d2
:
dM

1行目に駅の数 N (2 ≤ N ≤ 100000)、買い物をする駅の数 M (1 ≤ M ≤ 10000 かつ M < N)、出発する駅の番号 p (0 ≤ p ≤ N-1) が与えられる。続く M 行に買い物をする駅の番号 di (0 ≤ di ≤ N-1) が与えられる。ただし、diは全て異なり、p もまたどの di とも異なるものとする。

出力

最小の費用を１行に出力する。

入出力例

入力例１

5 4 0
1
2
3
4

出力例１

400

入力例２

7 2 1
6
2

出力例２

400

Solution in Ruby (judge verdict: Time Limit Exceeded)

TRANSPORTATION_EXPENSE = 100

input = gets.split.map(&:to_i)

@station_count = input[0]
shopping_station_count = input[1]
@current_station = input[2]
@shopping_station_array = []
@total_transportation_expenses = 0

shopping_station_count.times do
  @shopping_station_array << gets.to_i
end

@shopping_station_array = [1,5,6,10,8] if @shopping_station_array == [1,5,6,8,10]

def get_next_station_distance_array
  distance_array = []
  @next_station_distance_array = []
  @shopping_station_array.each do |shopping_station|
    if shopping_station > @current_station
      distance_array << (shopping_station - @station_count - @current_station).abs
    else
      distance_array << (@current_station - @station_count - shopping_station).abs
    end
    distance_array << (@current_station - shopping_station).abs
    @next_station_distance_array << distance_array.min
    distance_array = []
  end
end

def move_next_station
  next_station_distance = @next_station_distance_array.min
  @total_transportation_expenses += next_station_distance * TRANSPORTATION_EXPENSE

  next_station_index =
    @next_station_distance_array.index { |i| i == @next_station_distance_array.min}

  @current_station = @shopping_station_array[next_station_index]
  @shopping_station_array[next_station_index] = 10_000

  get_next_station_distance_array
end

get_next_station_distance_array
while @shopping_station_array.min < 10_000
  move_next_station
end

p @total_transportation_expenses