Codeforces Round 776 (Div. 3) |
---|
Закончено |
У Пети изначально был массив $$$a$$$ целых чисел от $$$1$$$ до $$$n$$$, где $$$a[i]=i$$$.
Он последовательно произвёл $$$n$$$ операций. В итоге он получил новое состояние массива $$$a$$$.
На $$$i$$$-й операции Петя выбирал первые $$$i$$$ элементов массива и произвольное количество раз совершал их циклический сдвиг вправо (элементы с номерами $$$i+1$$$ и больше оставались на своих местах). Один циклический сдвиг вправо — это такое преобразование, что массив $$$a=[a_1, a_2, \dots, a_n]$$$ станет равен $$$a = [a_i, a_1, a_2, \dots, a_{i-2}, a_{i-1}, a_{i+1}, a_{i+2}, \dots, a_n]$$$.
Например, если $$$a = [5,4,2,1,3]$$$ и $$$i=3$$$ (то есть это третья операция), то в результате этой операции он мог получить любой из трёх массивов:
Рассмотрим пример. Пусть $$$n=6$$$, то есть изначально $$$a=[1,2,3,4,5,6]$$$. Возможный вариант развития событий описан ниже.
Вам задано финальное состояние массива $$$a$$$ после всех $$$n$$$ операций. Определите, существует ли способ выполнения операций, который приведёт к этому результату. В случае положительного ответа найдите количество циклических сдвигов, которое могло быть сделано во время каждой из $$$n$$$ операций.
В первой строке входных данных записано целое число $$$t$$$ ($$$1 \le t \le 500$$$) — количество наборов входных данных в тесте.
Далее следуют описания наборов входных данных.
Первая строка описания каждого набора содержит одно целое число $$$n$$$ ($$$2 \le n \le 2\cdot10^3$$$) — длина массива $$$a$$$.
В следующей строке задано финальное состояние массива $$$a$$$: записаны $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le n$$$). Все $$$a_i$$$ — различны.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных теста не превосходит $$$2\cdot10^3$$$.
Для каждого набора входных данных выведите ответ на отдельной строке.
Выведите -1, если заданное финальное значение $$$a$$$ нельзя получить, производя произвольное количество циклических сдвигов на каждой операции. Иначе выведите $$$n$$$ неотрицательных целых чисел $$$d_1, d_2, \dots, d_n$$$ ($$$d_i \ge 0$$$), где $$$d_i$$$ обозначает, что во время $$$i$$$-й операции первые $$$i$$$ элементов массива были циклически сдвинуты вправо $$$d_i$$$ раз.
Если возможных ответов несколько выведите тот, где суммарное количество сдвигов минимально (то есть сумма значений $$$d_i$$$ наименьшая). Если таких ответов несколько, то выведите любой из них.
3 6 3 2 5 6 1 4 3 3 1 2 8 5 8 1 3 2 6 4 7
0 1 1 2 0 4 0 0 1 0 1 2 0 2 5 6 2
Первый набор входных данных совпадает с примером из условия.
Второй набор входных данных как видно несложный. Заметим, что ответ $$$[3, 2, 1]$$$ также даёт ту же перестановку, но так как суммарное количество сдвигов $$$3+2+1$$$ больше $$$0+0+1$$$, то такой ответ не является правильным.
Название |
---|