Problem:
ガソリンスタンド

　

白虎サービスエリアのガソリンスタンドには、$1$から$N$の番号が割り当てられた$N$個のレーンがあります。各レーンの先頭の車が給油を行うことができます。

ガソリンスタンドに入場した車は、並んでいる車が最も少ないレーンを選び列の末尾に並びます。そのようなレーンが複数ある場合は、番号が最も小さいレーンを選びます。給油が終わるとその車はレーンから出ていき、その後ろの車が給油を行います。一度レーンを選んだら、他のレーンに移ることはできません。また、レーンに並んでいる車の順番が変わることはありません。

レーンの数、入場した車と給油が終了したレーンの情報が与えられたとき、給油が終了した車のナンバーを順番に出力するプログラムを作成せよ。入場の情報はスタンドに入ってくる車のナンバー、給油終了の情報は先頭の車の給油が終了したレーン番号としてそれぞれ与えられる。ただし、最初はどのレーンにも車は並んでいないものとする。

入力

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

$N$ $M$
$info_1$
$info_2$
:
$info_M$

１行目にレーンの数$N$ ($1\leq N \leq 10$)と情報の数$M$ ($2 \leq M \leq 10,000$)が与えられる。続く$M$行に各情報$info_i$が与えられる。各$info_i$は以下のいずれかの形式で与えられる。

0 $lane$

または

1 $car$

最初の数字が0の場合、番号が$lane$ ($1 \leq lane \leq N$)であるレーンに並んでいる先頭の車の給油が終了したことを示す。最初の数字が1の場合、ナンバーが$car$ ($1 \leq car \leq 9,999$)である車がスタンドに入場したことを示す。

入力は以下の制約を満たす。

ガソリンスタンドに入って来る車のナンバーは、全て異なる。

最初の数字が0,1である情報は、それぞれ必ず１つ以上ある。

車のいないレーンに対して、最初の数字が0である情報は与えられない。

出力

給油終了の情報ごとに、給油が終了した車のナンバーを1行に出力する。
 

入出力例

入力例

2 7
1 999
1 1000
0 2
1 1001
1 1002
0 1
0 1

出力例

1000
999
1002

Solution in Ruby (judge verdict: Accepted)

n, m = gets.chomp.split.map(&:to_i)
lanes = Array.new(n){[]}
m.times{
    a, b = gets.chomp.split.map(&:to_i)
    case a
    when 0
        puts lanes[b - 1].shift
    when 1
        min = lanes.map{|ar| ar.length}.min
        i = lanes.index{|ar| ar.length == min}
        lanes[i] << b
    end
}