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

Задача . C. MEX много раз


Дан массив \(a_1,a_2,\ldots, a_n\), состоящий из попарно различных целых чисел от \(0\) до \(n\). Рассмотрим следующую операцию:

  • последовательно для каждого \(i\) от \(1\) до \(n\) в этом порядке элемент \(a_i\) заменяется на \(\operatorname{MEX}(a_1, a_2, \ldots, a_n)\).

Здесь \(\operatorname{MEX}\) набора чисел \(c_1, c_2, \ldots, c_m\) определяется как наименьшее неотрицательное целое число \(x\), которое не встречается в наборе чисел \(c\). Например, \(\operatorname{MEX}(0, 2, 2, 1, 4) = 3\), и \(\operatorname{MEX}(1, 2) = 0\).

Выведите массив, который получится после применения к нему такой операции \(k\) раз.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10^5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(k\) (\(1\le n\le 10^5\), \(1\le k\le 10^9\)).

Вторая строка каждого набора входных данных содержит \(n\) попарно различных целых чисел \(a_1,a_2,\ldots, a_n\) (\(0\le a_i\le n\)) — элементы массива до выполнения операций.

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

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

Для каждого набора входных данных выведите все \(n\) элементов итогового массива после применения к нему операции \(k\) раз.

Примечание

В первом наборе входных данных процесс происходит следующим образом:

  1. На первой операции массив изменяется с \([1]\) на \([0]\), поскольку \(\operatorname{MEX}(1) = 0\).
  2. На второй операции массив изменяется с \([0]\) на \([1]\), поскольку \(\operatorname{MEX}(0) = 1\).

Значит, массив станет равен \([1]\) после двух операций.

Во втором наборе входных данных за одну операцию массив изменяется так: \([{\mkern3mu\underline{\mkern-3mu {\bf 0}\mkern-3mu}\mkern3mu}, 1, 3] \rightarrow [2, {\mkern3mu\underline{\mkern-3mu {\bf 1}\mkern-3mu}\mkern3mu}, 3] \rightarrow [2, 0, {\mkern3mu\underline{\mkern-3mu {\bf 3}\mkern-3mu}\mkern3mu}] \rightarrow [2, 0, 1]\).

В третьем наборе входных данных за одну операцию массив изменяется так: \([{\mkern3mu\underline{\mkern-3mu {\bf 0}\mkern-3mu}\mkern3mu}, 2] \rightarrow [1, {\mkern3mu\underline{\mkern-3mu {\bf 2}\mkern-3mu}\mkern3mu}] \rightarrow [1, 0]\). За вторую операцию массив изменяется так: \([{\mkern3mu\underline{\mkern-3mu {\bf 1}\mkern-3mu}\mkern3mu}, 0] \rightarrow [2, {\mkern3mu\underline{\mkern-3mu {\bf 0}\mkern-3mu}\mkern3mu}] \rightarrow [2, 1]\).


Примеры
Входные данныеВыходные данные
1 5
1 2
1
3 1
0 1 3
2 2
0 2
5 5
1 2 3 4 5
10 100
5 3 0 4 2 1 6 9 10 8
1
2 0 1
2 1
2 3 4 5 0
7 5 3 0 4 2 1 6 9 10

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

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