페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
30000
ms
메모리 제한
1024
MB
1부터 N까지 번호가 매겨진 N명의 사람이 ATM에서 돈을 인출하기 위해 대기열에 서 있다. 대기열은 사람들의 번호가 오름차순이 되도록 구성되어 있다. 번호가 i인 사람은 만큼을 인출하려 한다. 한 사람이 한 번에 인출할 수 있는 최대 금액은 X이다. X보다 많은 돈이 필요하면 대기열의 맨 뒤로 가서 자신의 차례를 기다려야 한다. 필요한 금액을 모두 인출한 사람은 대기열을 떠난다.
모든 사람이 대기열을 떠나는 순서를 구해야 한다.
시간 제한: 20초. 메모리 제한: 1 GB. 1 ≤ T ≤ 100.
1 ≤ N ≤ 100. 1 ≤ ≤ 100. 1 ≤ X ≤ 100.
최대 10개의 테스트 케이스에 대해 1 ≤ N ≤ . 나머지 케이스에서는 1 ≤ N ≤ 100 1 ≤ ≤ . 1 ≤ X ≤ .
입력의 첫 번째 줄에는 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 공백으로 구분된 두 정수, 대기열에 서 있는 사람의 수 N과 한 차례에 인출할 수 있는 최대 금액 X가 주어진다.
다음 줄에는 공백으로 구분된 N개의 정수 가 주어진다.
각 테스트 케이스마다 Case #x: y를 포함하는 한 줄을 출력한다. 여기서 x는 (1부터 시작하는) 테스트 케이스 번호이고, y는 사람들이 대기열을 떠나는 순서를 나타내는 공백으로 구분된 정수 목록이다.
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예제 케이스 #1에는 3명의 사람이 있으며, 한 차례에 인출할 수 있는 한도는 3이다. 다음은 이 과정이 어떻게 진행되는지를 단계별로 설명한 것이다.
처음 대기열은 와 같다. 첫 번째 사람은 첫 시도에 2만큼을 인출하고 대기열을 떠난다.
이제 대기열은 와 같다. 두 번째 사람은 7만큼을 인출하려 하지만, 첫 차례에는 3만큼만 인출할 수 있다. 아직 4만큼을 더 인출해야 하므로 대기열의 맨 뒤에 다시 합류해야 한다.
이제 대기열은 와 같다. 세 번째 사람은 4만큼을 인출해야 하지만 첫 차례에는 3만큼만 인출할 수 있으므로, 나중에 1만큼을 인출하기 위해 대기열의 맨 뒤에 다시 합류한다.
이제 대기열은 와 같다. 두 번째 사람은 아직 4만큼을 인출해야 한다. 두 번째 차례에 3만큼을 인출하고, 남은 1만큼을 인출할 다음 차례가 오기를 기다린다.
이제 대기열은 와 같다. 세 번째 사람은 남은 1만큼을 인출하고 대기열을 떠난다.
이제 대기열은 와 같다. 두 번째 사람은 남은 1만큼을 인출하고 대기열을 떠난다.
이제 대기열은 비어 있다.
사람들이 대기열을 떠나는 순서는 이다.
예제 케이스 #2에는 5명의 사람이 있으며, 한 차례에 인출할 수 있는 한도는 6이다. 다음은 이 과정이 어떻게 진행되는지를 단계별로 설명한 것이다.
처음 대기열은 와 같다. 첫 번째 사람은 6만큼을 인출하고, 나중에 남은 3만큼을 인출하기 위해 다시 맨 뒤에 합류한다.
대기열은 와 같다. 두 번째 사람도 마찬가지로 6만큼을 인출하고, 4만큼을 인출할 다음 차례를 기다린다.
대기열은 와 같다. 세 번째 사람은 4만큼을 인출하고 대기열을 떠난다.
이제 대기열은 와 같다. 네 번째 사람은 6만큼을 인출하고 다음 차례를 기다린다.
대기열은 와 같다. 다섯 번째 사람은 2만큼을 인출하고 대기열을 떠난다.
대기열은 와 같다. 이제 다른 모든 사람은 두 번째 차례가 끝난 뒤 한 명씩 대기열을 떠난다.
사람들이 대기열을 떠나는 순서는 이다.
Copyright Google LLC; sourced from the Google Coding Competitions Archive.
로그인 상태를 확인하는 중입니다.