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



Sample input:
2 7
1 999
1 1000
0 2
1 1001
1 1002
0 1
0 1


Sample output:
1000
999
1002

Submission status: Accepted

Solution code:
N, M = map(int, input().split())
L = [[] for i in range(N)]
ans = []
for i in range(M) :
    info, num = map(int, input().split())
    
    if info == 1 :
        x = 0
        for j in range(1, N) :
            if len(L[j]) < len(L[x]) :
                x = j
        L[x].append(num)
    else :
        ans.append(L[num-1][0])
        del L[num-1][0]
print(*ans, sep='\n')

Submission status: Accepted

Solution code:
from collections import deque
N,M = [int(x) for x in input().split(" ")]
qs = []
for i in range(N):
    qs.append(deque())
lens = [0]*N
for i in range(M):
    info,num = [int(x) for x in input().split(" ")]
    if info == 0:
        print(qs[num-1].popleft())
        lens[num-1] -= 1
    elif info == 1:
        index = 0
        for j in range(N):
            if lens[index] > lens[j]:
                index = j
        qs[index].append(num)
        lens[index] += 1

Submission status: Accepted

Solution code:

N,M = [int(i) for i in input().split()]
table = [[] for i in range(N)]


for l in range(M):
    command,num = [int(i) for i in input().split()]
    if command == 0:
        print(table[num-1].pop(0))
    else:
        minSize = 10000
        minId = -1
        for i in range(N):
            if len(table[i]) < minSize:
                minSize = len(table[i])
                minId = i
        #print(minId,num)
        table[minId].append(num)

Submission status: Accepted

Solution code:
n,m = (int(x) for x in input().split())
rane = [[]  for i in range(n)]

def getRane():
    index = 0
    min = 9999
    for i in range(0,n):
        if min > len(rane[i]):
            min = len(rane[i])
            if min == 0:
                return i
            index = i
    return index

for i in range(0,m):
    c,num = (int(x) for x in input().split())
    # 給油終了
    if c == 0:
        num -= 1
        print(rane[num][0])
        rane[num].pop(0)
    # スタンドに入る
    else:
        index = getRane()
        rane[index].append(num)

Submission status: Accepted

Solution code:
from collections import deque

N, M = map(int, input().split())

lanes = [deque() for i in range(N + 1)]

for i in range(M):
    info = list(map(int, input().split()))
    if info[0] == 0:
        print(lanes[info[1]].popleft())
    else:
        lane = -1
        count = 10001
        for j in range(1, N + 1):
            if len(lanes[j]) < count:
                lane = j
                count = len(lanes[j])
        lanes[lane].append(info[1])

Submission status: Accepted

Solution code:
import heapq
from collections import deque
from enum import Enum
import sys
import math
from _heapq import heappush, heappop
import copy

BIG_NUM = 2000000000
MOD = 1000000007
EPS = 0.000000001


num_lane,num_info = map(int,input().split())
Q = []
for _ in range(num_lane):
    Q.append(deque())

for _ in range(num_info):
    command,value = map(int,input().split())
    if command == 0:
        value -= 1
        print("%d"%(Q[value].popleft()))
    else:
        min_car = BIG_NUM
        min_lane = BIG_NUM
        for i in range(num_lane):
            if len(Q[i]) < min_car:
                min_car = len(Q[i])
                min_lane = i
        Q[min_lane].append(value)