만드는 중입니다

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

열심히 일하는 중

면접 대비

시간 제한1초메모리 제한512 MB

요약
매일 중요도가 가장 높은 일을 하고 그 중요도를 M만큼 낮춥니다. 중요도가 K 이하가 될 때까지 반복하며, 걸리는 날 수와 매일의 만족도를 출력합니다.
난이도

쉬움10점 중 3점

유형
힙, 시뮬레이션
정답자
아직 제출이 없습니다

문제

송이는 이번 학기에 할 일이 매우 많다. NN개의 일 중 어떤 일부터 해야 할지 고민하던 중, 송이에게 좋은 아이디어가 떠올랐다. 해야 할 일마다 중요도를 매기고, 중요도가 높은 일부터 하는 것이다. 송이는 하루에 일 하나만 처리할 수 있다. 일을 처리하면 그 일의 중요도는 MM만큼 줄어든다. 일의 중요도가 KK 이하가 되면 그 일은 완료된 것으로 본다.

날마다 중요도를 따져 보던 송이는 일하면서 매일 느낄 만족감이 궁금해졌다. 전날의 만족감을 YY, 오늘 할 일의 중요도를 PP라 하면, 오늘의 만족감은 ⌊Y/2⌋+P\lfloor Y/2 \rfloor+P이다.

예를 들어, 전날의 만족감이 2121이고 오늘 할 일의 중요도가 1010, MM이 44라고 하자. 오늘의 만족감은 ⌊21/2⌋+10=20\lfloor 21/2 \rfloor+10 = 20이다. 이후 오늘 한 일의 중요도는 44만큼 줄어 66이 된다.

NN, MM, KK와 각 일 ii의 중요도 DiD_i가 주어졌을 때, 송이가 모든 일을 끝내는 데 며칠이 걸리는지 구하라. 또한 모든 일을 끝낼 때까지 날마다 느낀 만족감도 출력하라. 첫날은 전날의 만족감을 00으로 본다.

입력

첫째 줄에 정수 NN, MM, KK가 공백으로 구분되어 주어진다. (2≤N≤2 000;1≤M≤5;1≤K≤3)(2 \leq N \leq 2\,000; 1 \leq M \leq 5; 1 \leq K \leq 3)

둘째 줄부터 NN개의 줄에 걸쳐 각 일의 중요도 정수 DiD_i가 주어진다. (M<Di,K<Di,Di≤1 000)(M < D_i, K < D_i, D_i \leq 1\,000)

출력

첫째 줄에 송이가 모든 일을 끝내는 데 걸리는 날의 수를 출력한다.

둘째 줄부터 모든 일을 끝내는 날까지 날마다 느낀 만족감을 한 줄에 하나씩 출력한다.

힌트

⌊ ⌋\lfloor \ \rfloor는 바닥 함수로, ⌊x⌋\lfloor x \rfloor는 xx 이하의 정수 중 가장 큰 정수를 뜻한다.

예제1

  1. 예제 1

    입력
    2 5 3
    10
    18
    
    예상 출력
    5
    18
    22
    21
    18
    14