PivotOJ

허수아비

시간 제한: 2000ms메모리 제한: 2048MB출처: KOI 2025 1차BOJ 34117

문제

수직선의 위치 00에서 오른쪽 방향으로 힘 PP를 가진 화살이 발사된다. 각 정수 위치 ii (1 ≤ i ≤ N)에는 방어력 AiA_i를 가진 허수아비를 최대 하나 설치할 수 있다. 화살이 허수아비에 부딪치면, 화살의 힘이 방어력보다 작거나 같을 경우 화살은 즉시 멈춘다. 반대로 화살의 힘이 방어력보다 크면, 화살의 힘은 현재 화살의 힘에서 AiA_i만큼 줄어든 채 계속 진행한다.

정수 ii에 대하여 f(i)f(i)의 값을 "화살이 위치 ii에서 멈추거나 위치 ii보다 왼쪽에서 멈추도록 하기 위해 필요한 허수아비의 최소 개수" 라고 정의하자. 화살을 멈추게 할 수 있는 방법이 없을 때의 값은 −1이다.

예를 들어서 N=5N = 5, P=10P = 10이고 A1=3A_1 = 3, A2=6A_2 = 6, A3=1A_3 = 1, A4=1A_4 = 1, A5=10A_5 = 10이라고 하자. 모든 f(i)f(i)의 값과 설치한 허수아비의 위치는 다음과 같다.

ii f(i)f(i)의 값 설치한 허수아비의 위치
i=1i = 1 1-1 불가능
i=2i = 2 1-1 불가능
i=3i = 3 33 [1,2,3][1, 2, 3]
i=4i = 4 33 [1,2,3][1, 2, 3] 혹은 [1,2,4][1, 2, 4] 중 하나 선택 가능
i=5i = 5 11 [5][5]

1 ≤ i ≤ N인 모든 ii에 대하여 f(i)f(i)의 값을 구하는 프로그램을 작성하라.

입력

첫 번째 줄에 정수 NN과 화살의 힘 PP가 공백을 사이에 두고 주어진다.

두 번째 줄에 NN개의 정수 A1,A2,,ANA_1 , A_2 ,\cdots, A_N이 공백을 사이에 두고 주어진다.

출력

첫 번째 줄에 f(1),f(2),,f(N)f(1), f(2), \cdots , f(N)의 값을 공백을 사이에 두고 출력한다.

예제

예제 1

입력
5 10
3 6 1 1 10
출력
-1 -1 3 3 1

예제 2

입력
3 10
20 20 20
출력
1 1 1

예제 3

입력
1 5
3
출력
-1
코드를 제출하려면 로그인하세요.