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

Задача . B. K-покраска массива


Задан массив \(a\), состоящий из \(n\) целых чисел.

Вам необходимо покрасить этот массив в \(k\) цветов таким образом, чтобы:

  • Каждый элемент массива должен быть покрашен в какой-то цвет;
  • Для всех \(i\) от \(1\) до \(k\) существует хотя бы один элемент массива, покрашенный в \(i\)-й цвет;
  • Для всех \(i\) от \(1\) до \(k\) все элементы, покрашенные в \(i\)-й цвет, должны быть различны.

Очевидно, что такой раскраски может не существовать. В этом случае выведите «NO». Иначе выведите «YES» и любую раскраску (то есть числа \(c_1, c_2, \dots c_n\), где \(1 \le c_i \le k\), а \(c_i\) означает цвет \(i\)-го элемента заданного массива), удовлетворяющую ограничениям, описанным выше. Если существует несколько возможных ответов, выведите любой.

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

Первая строка входных данных содержит два целых числа \(n\) и \(k\) (\(1 \le k \le n \le 5000\)) — длина массива \(a\) и количество цветов соответственно.

Вторая строка входных данных содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 5000\)) — элементы массива \(a\).

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

Если ответа не существует, выведите «NO». Иначе выведите «YES» и любую раскраску (то есть числа \(c_1, c_2, \dots c_n\), где \(1 \le c_i \le k\), а \(c_i\) означает цвет \(i\)-го элемента заданного массива), удовлетворяющую ограничениям, описанным выше. Если существует несколько возможных ответов, выведите любой.

Примечание

В первом тестовом примере также допустим ответ \(2~ 1~ 2~ 1\).

Во втором тестовом примере также допустим ответ \(1~ 1~ 1~ 2~ 2\).

Также существуют другие возможные ответы на оба тестовых примера.


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

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

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