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

Задача . D. Заменить на MEX


Вам дан массив из \(n\) целых чисел от \(0\) до \(n\) включительно.

За одну операцию вы можете выбрать любой элемент массива и заменить его на MEX всех элементов массива (этот MEX может измениться после операции).

Например, если текущий массив равен \([0, 2, 2, 1, 4]\), то вы можете выбрать второй элемент и заменить его на MEX существующих элементов  — \(3\). Массив станет равным \([0, 3, 2, 1, 4]\).

Вы должны сделать массив неубывающим, используя не более \(2n\) операций.

Можно показать, что это всегда возможно. Обратите внимание, что вы не должны минимизировать количество операций. Если есть много решений, вы можете найти любое из них.

 –

Напомним, что массив \(b[1 \ldots n]\) является неубывающим тогда и только тогда, когда \(b_1 \le b_2 \le \ldots \le b_n\).

Напомним, что MEX массива равен наименьшему неотрицательному целому числу, которое не принадлежит массиву. Например:

  • MEX для \([2, 2, 1]\) равен \(0\), поскольку \(0\) не принадлежит массиву.
  • MEX для \([3, 1, 0, 1]\) равен \(2\), поскольку \(0\) и \(1\) принадлежат массиву, а \(2\)  — нет.
  • MEX для \([0, 3, 1, 2]\) равен \(4\), поскольку \(0\), \(1\), \(2\) и \(3\) принадлежат массиву, а \(4\) — нет.

Стоит отметить, что MEX массива длины \(n\) всегда находится между \(0\) и \(n\) включительно.

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

Первая строка содержит одно целое число \(t\) (\(1 \le t \le 200\)) — количество наборов входных данных. Описание наборов входных данных приведено ниже.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(3 \le n \le 1000\)) — длину массива.

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

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

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

Для каждого набора входных данных вы должны вывести две строки:

Первая строка должна содержать одно целое число \(k\) (\(0 \le k \le 2n\))  — количество операций, которые вы выполняете.

Вторая строка должна содержать \(k\) целых чисел \(x_1, \ldots, x_k\) (\(1 \le x_i \le n\)), где \(x_i\)  — индекс элемента, с котором вы выполняете операцию \(i\).

Если есть много решений, вы можете найти любое из них. Пожалуйста, помните, что минимизировать \(k\) не требуется.

Примечание

В первом наборе входных данных массив уже не убывает (\(2 \le 2 \le 3\)).

Объяснение второго набора входных данных (элемент, изменяемый каждой операцией, окрашен красным):

  • \(a = [2, 1, 0]\) ; начальный MEX равен \(3\).
  • \(a = [2, 1, \color{red}{3}]\) ; новый MEX равен \(0\).
  • \(a = [\color{red}{0}, 1, 3]\) ; новый MEX равен \(2\).
  • Итоговый массив неубывающий: \(0 \le 1 \le 3\).

Объяснение третьего набора входных данных:

  • \(a = [0, 7, 3, 1, 3, 7, 7]\) ; начальный MEX равен \(2\).
  • \(a = [0, \color{red}{2}, 3, 1, 3, 7, 7]\) ; новый MEX равен \(4\).
  • \(a = [0, 2, 3, 1, \color{red}{4}, 7, 7]\) ; новый MEX равен \(5\).
  • \(a = [0, 2, 3, 1, \color{red}{5}, 7, 7]\) ; новый MEX равен \(4\).
  • \(a = [0, 2, 3, \color{red}{4}, 5, 7, 7]\) ; новый MEX равен \(1\).
  • Итоговый массив неубывающий: \(0 \le 2 \le 3 \le 4 \le 5 \le 7 \le 7\).

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

2
3 1
4
2 5 5 4
11
3 8 9 7 8 5 9 6 4 1 2
10
1 8 1 9 5 2 4 6 3 7

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

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