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

Задача . F. Инверсии композиции


Вам дана перестановка \(p\) длины \(n\), а также целое неотрицательное число \(k\). Вам нужно построить перестановку \(q\) длины \(n\) такую, что \(\operatorname{inv}(q) + \operatorname{inv}(q \cdot p) = k {}^\dagger {}^\ddagger\), или определить, что это сделать невозможно.

\({}^\dagger\) Для двух перестановок \(p\) и \(q\) одинаковой длины \(n\) перестановка \(w = q \cdot p\) такова, что \(w_i = q_{p_i}\) для всех \(1 \le i \le n\).

\({}^\ddagger\) Для перестановки \(p\) длины \(n\) функция \(\operatorname{inv}(p)\) возвращает количество инверсий \(p\), то есть количество пар индексов \(1 \le i < j \le n\) таких, что \(p_i > p_j\).

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

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

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(k\) (\(1 \le n \le 3 \cdot 10^5, 0 \le k \le n(n - 1)\)) — длину \(p\) и требуемое количество инверсий.

Вторая строка каждого набора входных данных содержит \(n\) целых чисел \(p_1, p_2, \ldots, p_n\) (\(1 \le p_i \le n\), \(p_i\) попарно различны) — перестановку \(p\).

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

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

Для каждого набора входных данных выведите в отдельной строке «YES», если существует перестановка \(q\), удовлетворяющая заданному условию, или «NO», если такой перестановки не существует.

Если ответ «YES», то во второй строке выведите \(n\) целых чисел \(q_1, q_2, \ldots, q_n\), которые представляют собой удовлетворяющую условию перестановку \(q\). Если таких \(q\) несколько, выведите любую из них.

Примечание

В первом наборе входных данных имеем \(q \cdot p = [2, 1, 3]\), \(\operatorname{inv}(q) = 3\), и \(\operatorname{inv}(q \cdot p) = 1\).

В четвертом наборе входных данных имеем \(q \cdot p = [9, 1, 8, 5, 7, 6, 4, 3, 2]\), \(\operatorname{inv}(q) = 24\), и \(\operatorname{inv}(q \cdot p) = 27\).


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

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

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