https://www.acmicpc.net/problem/20006
시간 1초, 메모리 256MB
input :
output :
조건 :
플레이어가 입장을 신청하였을 때 매칭이 가능한 방이 없다면 새로운 방을 생성하고 입장시킨다. 이떄 해당 방에는 처음 입장한 플레이어의 레벨을 기준으로 -10부터 +10까지 입장 가능하다.
입장 가능한 방이 있다면 입장시킨 후 방의 정원이 모두 찰 때까지 대기시킨다.
이때 입장이 가능한 방이 여러 개라면 먼저 생성된 방에 입장한다. 방의 정원이 모두 차면 게임을 시작시킨다.
사실 그냥 별 거 없이 힙을 써가지고, 언제 만들어졌는지 저장을 한 후 이 '방'들을 꺼내서 레벨 제한이 몇인지, 길이가 어떻게 되는지 확인을 하며 추가를 하도록하면 된다.
그러면 왜 그렇게 많이 틀렸나???? 그냥 출력에 들어있는 조건중 사전 순을 읽지 않았다.....
언제나 정렬을 합시다....
import sys
p, m = map(int, sys.stdin.readline().split())
room = [[] for i in range(p)]
for i in range(p):
l, n = sys.stdin.readline().split()
for idx, item in enumerate(room):
if 0 < len(room[idx]) < m:
pivot_level = item[0][0]
if pivot_level - 10 <= int(l) <= pivot_level + 10:
room[idx].append((int(l), n))
break
if len(room[idx]) == 0:
room[idx].append((int(l), n))
break
for data in room:
data.sort(key=lambda x: x[1])
if len(data) == 0:
continue
if len(data) == m:
print("Started!")
for item in data:
print(item[0], item[1])
else:
print("Waiting!")
for item in data:
print(item[0], item[1])