Олимпиадный тренинг

Задача . C. Феникс и башни


У Феникса есть \(n\) блоков высотой \(h_1, h_2, \dots, h_n\), где все \(h_i\) не превосходят некоторого значения \(x\). Он планирует расставить все \(n\) блоков в виде \(m\) башен. Высота башни — это просто сумма высот блоков, из которой она состоит. Для того чтобы башни выглядели красиво, высота никаких двух башен не должна отличаться более, чем на \(x\).

Помогите Фениксу построить \(m\) башен красиво. В каждой башне должно быть хотя бы по одному блоку и все блоки должны быть использованы.

Входные данные

Входные данные состоят из нескольких наборов. В первой строке задано одно целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов входных данных.

В первой строке каждого набора заданы три целых числа \(n\), \(m\) и \(x\) (\(1 \le m \le n \le 10^5\); \(1 \le x \le 10^4\)) — количество блоков, количество выстраиваемых башен и максимально разрешенная разность высот между любой парой башен, соответственно.

Во второй строке каждого набора заданы \(n\) целых чисел через пробел (\(1 \le h_i \le x\)) — высоты блоков.

Гарантируется, что сумма \(n\) по всем наборам не превосходит \(10^5\).

Выходные данные

Для каждого набора входных данных, если Феникс не сможет построить \(m\) башен красиво, выведите NO. В противном случае выведите YES и \(n\) целых чисел \(y_1, y_2, \dots, y_n\), где \(y_i\) (\(1 \le y_i \le m\)) — это номер башни, в которую попадет \(i\)-й блок.

Если существует несколько решений, выведите любое из них.

Примечание

В первом наборе, первая башня будет высоты \(1+2+3=6\), а вторая — высоты \(1+2=3\). Их разность \(6-3=3\) и не превосходит \(x=3\), поэтому башни красивые.

Во втором наборе, первая башня будет высоты \(1\), вторая — \(1+2=3\) и третья — \(3\). Максимальная разность между любой парой башен равна \(3-1=2\), что не превосходит \(x=3\), поэтому башни красивые.


Примеры
Входные данныеВыходные данные
1 2
5 2 3
1 2 3 1 2
4 3 3
1 1 2 3
YES
1 1 1 2 2
YES
1 2 2 3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя