| Codeforces Round 1082 (Div. 1) |
|---|
| Закончено |
Существует $$$2n$$$ карточек с числами $$$1,1,2,2,\ldots,n,n$$$, написанными на них. Другими словами, для всех $$$j=1,2,\ldots,n$$$ есть ровно $$$2$$$ карточки с номером $$$j$$$. На каждой карточке написано только одно число на лицевой стороне.
Вы будете играть в игру с переворотом карточек. Изначально все $$$2n$$$ карточек лежат лицом вниз (стороной без чисел). На каждом ходу вы переворачиваете ровно две карточки. Если две карточки имеют одинаковое число, вы выбрасываете эти две карточки. В противном случае вы переворачиваете их обратно в исходное положение. Вы выигрываете, когда все $$$2n$$$ карточек выброшены. Обратите внимание, что вам не нужно переворачивать две карточки одновременно, поэтому вы можете решить, какую карточку выбрать второй, после того как увидите число на первой.
Рассмотрим следующий «жадный» алгоритм для игры. Изначально $$$2n$$$ карточек размещены в ряд произвольно. Затем ваша стратегия на каждом ходе следующая:
Можно показать, что стратегия алгоритма уникально определяется на каждом ходе.
Вы должны решить следующую задачу, касающуюся вышеуказанного алгоритма.
Кроме того, если такого расположения не существует, пожалуйста, сообщите об этом.
$$$^{\text{∗}}$$$Здесь «первая карточка» некоторого условия относится к самой ранней карточке в ряду, удовлетворяющей этому условию.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^3$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Единственная строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 300\,000$$$, $$$1 \le k \le 1\,000\,000$$$).
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$300\,000$$$.
Если существует расположение карточек, которое удовлетворяет условиям, выведите «YES» на новой строке.
Затем выведите $$$2n$$$ целых числа $$$a_1,a_2,\ldots,a_{2n-1},a_{2n}$$$ на следующей строке. Здесь $$$a_i$$$ — это число, написанное на $$$i$$$-й карточке.
Обратите внимание, что последовательность $$$a$$$ должна удовлетворять следующим условиям:
Если существует несколько решений, выведите любое из них.
Если нет ориентации карточек, которая удовлетворяет условиям, выведите «NO» на отдельной строке.
Вы можете выводить ответ в любом регистре. Например, строки «yEs», «yes», и «Yes» также будут распознаны как положительные ответы.
62 33 43 23 56 106 67
YES 2 1 2 1 YES 1 3 2 2 1 3 NO YES 1 2 3 1 2 3 YES 2 1 3 4 5 4 1 2 6 5 6 3 NO
Для первого набора входных данных выборы на каждом ходе следующие:
Здесь красные числа указывают на карточки, перевернутые в текущем ходе, а синие числа указывают на карточки, которые вы перевернули ранее.
Для четвертого набора входных данных выборы на каждом ходе следующие:
Алгоритм потребовал ровно $$$k=5$$$ ходов, чтобы выиграть игру.
| Название |
|---|


