아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

마법 검

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

요약
n개의 나이가 주어질 때, 각 노드가 최대 두 개의 자식을 가지고 모든 자식이 부모보다 최소 k년 어린 숲을 만들거나, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 트리, 구현
정답자
아직 제출이 없습니다

문제

НИИЧАВО의 고고학 부서가 고대 플랫랜드의 마법 검을 연구하기로 했다. 보유한 모든 표본을 조사한 결과, 거의 모든 검이 사실 서로의 복제품이라는 사실이 밝혀졌다.

즉, 아주 먼 옛날에 최초의 마법 검이 하나 만들어졌다. 그 뒤로 시간이 흐르면서 장인들은 기존의 마법 검 하나를 골라 그 복제품을 만들곤 했다. 물론 복제품은 원본과 달랐지만, 전반적으로 원본의 특징 일부를 물려받았다.

마법 검의 복제품을 만들면 그 검의 마법력이 약해지므로, 과학자들은 각 검에서 만들어진 복제품이 최대 두 개라는 사실을 알아냈다. 또한 복제품은 원본이 만들어진 뒤 최소 kk년이 지난 뒤에야 만들 수 있다는 사실도 밝혀졌다.

과학자들은 nn개의 검을 가지고 있고, 각 검의 나이를 알고 있다. 과학자들은 어느 검이 가장 먼저 만들어졌는지, 그리고 나머지 각 검이 어느 검에서 복제되었는지를 알아내려 한다. 안타깝게도 나이 정보만으로는 이 정보를 유일하게 복원하기에 충분하지 않을 수 있지만, 과학자들은 가능한 경우라면 어느 것이든 만족한다.

입력

첫 번째 줄에는 두 수 nn과 kk가 주어진다. nn은 과학자들이 가진 검의 수, kk는 검에서 복제품을 만들기 위해 필요한 최소 나이다 (1≤n≤100 0001 \le n \le 100\,000, 1≤k≤1081 \le k \le 10^8). 다음 줄에는 nn개의 수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어지며, aia_i (0≤ai≤1090 \le a_i \le 10^{9})는 ii번째 검의 나이다.

출력

각 검에 대해, 그 검이 복제된 원본 검의 번호를 출력한다. 각 검에서 만들어진 복제품은 최대 두 개라는 점에 유의하라.

어떤 검이 최초로 만들어진 검이라면, 그 검에 대해서는 0을 출력한다.

가능한 해가 여러 개라면 아무거나 출력한다.

과학자들이 틀렸고 검의 복제 순서가 존재하지 않는다면, 유일한 수 −1-1을 출력한다.

예제2

  1. 예제 1

    입력
    6 3
    2 10 6 0 5 2
    
    예상 출력
    5 0 2 3 2 5
    
  2. 예제 2

    입력
    4 3
    10 1 1 1
    
    예상 출력
    -1