RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00321

프린터 분량 처리

Silver IV 실버 IV
난이도
1s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

사무실 프린터에 \(N\)개의 인쇄 작업이 \(1\)번부터 \(N\)번까지 차례로 대기열에 들어가 있다. \(i\)번 작업은 \(s_i\)장의 분량을 가진다. 프린터는 한 번에 정확히 \(K\)장까지만 처리할 수 있어 다음과 같이 동작한다.

  • 대기열 맨 앞의 작업을 꺼낸다.
  • 그 작업의 남은 분량이 \(K\)장 이하이면 그 작업을 완료로 인쇄하고 대기열에서 제거한다.
  • 남은 분량이 \(K\)장보다 많으면 \(K\)장만 인쇄한 뒤 남은 분량을 가진 채로 그 작업을 대기열 맨 뒤로 보낸다.

모든 작업이 완료될 때까지 위 과정을 반복할 때, 작업이 완료되는 순서대로 작업 번호를 출력하여라.

제약

\(1 \le N \le 100\,000\), \(1 \le K \le 1\,000\), \(1 \le s_i \le 100\,000\)

입력 형식

첫째 줄에 작업 수 \(N\)과 한 번에 처리 가능한 장수 \(K\)가 주어진다. 둘째 줄에 각 작업의 분량 \(s_1, s_2, \dots, s_N\)이 공백으로 구분되어 주어진다.

출력 형식

작업이 완료되는 순서대로 작업 번호를 한 줄에 공백으로 구분하여 출력한다.

예제 1
입력
4 2
3 1 4 2
출력
2 4 1 3
설명

1번(3장)은 2장 인쇄 후 1장 남아 뒤로, 2번(1장)은 완료, 3번(4장)은 2장 후 2장 남아 뒤로, 4번(2장)은 완료, 다시 1번(1장 남음) 완료, 3번(2장 남음) 완료. 완료 순서는 2, 4, 1, 3.

예제 2
입력
3 5
5 5 5
출력
1 2 3
설명

모든 작업이 한 번에 인쇄되어 들어간 순서대로 완료된다.

힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

프린터 분량 처리

개요
출제자 난이도 Silver IV 실버 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

프린터 분량 처리

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8