만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

ATM 줄

면접 대비

시간 제한20초메모리 제한1024 MB

요약
줄을 선 사람마다 출금할 금액이 정해져 있고 한 번에 최대 X만 출금할 수 있으며, 남은 금액이 있으면 줄의 뒤로 다시 서게 될 때 모두가 줄을 떠나는 순서를 구한다.
난이도

보통10점 중 4점

유형
정렬, 시뮬레이션, 수학, 그리디
정답자
아직 제출이 없습니다

문제

1번부터 N번까지 번호가 붙은 N명의 사람이 ATM에서 돈을 인출하려고 줄을 서 있다. 줄은 번호가 작은 순서대로 서 있다. i번 사람은 Ai만큼 인출하려고 한다. 한 번에 인출할 수 있는 최대 금액은 X이다. 필요한 금액이 X보다 많으면 줄의 맨 뒤로 가서 다시 자기 차례를 기다려야 한다. 필요한 금액을 모두 인출한 사람은 줄에서 나간다.

모든 사람이 줄에서 나가는 순서를 구하시오.

입력

입력의 첫 줄에는 테스트 케이스의 수 T가 주어진다. 그다음 T개의 테스트 케이스가 이어진다.

각 테스트 케이스의 첫 줄에는 줄에 서 있는 사람 수 N과 한 번에 인출할 수 있는 최대 금액 X가 공백으로 구분되어 주어진다.

다음 줄에는 N개의 정수 Ai가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 x는 테스트 케이스 번호(1부터 시작)이고, y는 사람들이 줄에서 나가는 순서를 나타내는 정수 목록이다.

제한

  • 1 ≤ T ≤ 100.

힌트

예제 1에는 3명의 사람이 있고 한 번에 인출할 수 있는 한도는 3이다. 과정을 단계별로 설명하면 다음과 같다.

  1. 처음 줄은 [1, 2, 3]이다. 첫 번째 사람이 첫 시도에서 2를 인출하고 줄에서 나간다.
  2. 이제 줄은 [2, 3]이다. 두 번째 사람은 7을 인출하려고 하지만 첫 번째 차례에는 3만 인출할 수 있다. 아직 4를 더 인출해야 하므로 줄의 맨 뒤로 가서 다시 줄을 선다.
  3. 이제 줄은 [3, 2]이다. 세 번째 사람은 4를 인출해야 하지만 첫 번째 차례에는 3만 인출할 수 있으므로, 나중에 1을 인출하려고 줄의 맨 뒤로 간다.
  4. 이제 줄은 [2, 3]이다. 두 번째 사람은 아직 4를 인출해야 한다. 두 번째 차례에 3을 인출하고, 남은 1을 인출할 다음 차례를 기다린다.
  5. 이제 줄은 [3, 2]이다. 세 번째 사람이 남은 1을 인출하고 줄에서 나간다.
  6. 이제 줄은 [2]이다. 두 번째 사람이 남은 1을 인출하고 줄에서 나간다.
  7. 줄이 비었다.

사람들이 줄에서 나가는 순서는 [1, 3, 2]이다.

예제 2에는 5명의 사람이 있고 한 번에 인출할 수 있는 한도는 6이다. 과정을 단계별로 설명하면 다음과 같다.

  1. 처음 줄은 [1, 2, 3, 4, 5]이다. 첫 번째 사람이 6을 인출하고, 나중에 남은 3을 인출하려고 맨 뒤에 다시 줄을 선다.
  2. 줄은 [2, 3, 4, 5, 1]이다. 두 번째 사람도 마찬가지로 6을 인출하고, 다음 차례에 4를 인출하려고 기다린다.
  3. 줄은 [3, 4, 5, 1, 2]이다. 세 번째 사람이 4를 인출하고 줄에서 나간다.
  4. 이제 줄은 [4, 5, 1, 2]이다. 네 번째 사람이 6을 인출하고 다음 차례를 기다린다.
  5. 줄은 [5, 1, 2, 4]이다. 다섯 번째 사람이 2를 인출하고 줄에서 나간다.
  6. 줄은 [1, 2, 4]이다. 이제 나머지 사람들이 두 번째 차례에 차례로 줄에서 나간다.

사람들이 줄에서 나가는 순서는 [3, 5, 1, 2, 4]이다.

예제1

  1. 예제 1

    입력
    2
    3 3
    2 7 4
    5 6
    9 10 4 7 2
    
    예상 출력
    Case #1: 1 3 2
    Case #2: 3 5 1 2 4