eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Преобразование суффиксов

Преобразование суффиксов

Задан текст \textbf{s\[1..n\]} длины \textbf{n}. Создадим суффиксный массив, взяв все его суффиксы \textbf{s\[1..n\], s\[2..n\], ..., s\[n..n\]} и отсортировав их лексикографически. Получим отсортированный список суффиксов: \textbf{s\[p(1)..n\], s\[p(2)..n\], ..., s\[p(n)..n\]} и назовем последовательность \textbf{p(1)}, \textbf{p(2)}, ..., \textbf{p(n)} суффиксным массивом \textbf{s\[1..n\]}. Например, если \textbf{s = abbaabab}, то отсортированный список суффиксов имеет вид: \textbf{aabab, ab, abab, abbaabab, b, baabab, bab, bbaabab} и суффиксный массив выглядит так: \textbf{4}, \textbf{7}, \textbf{5}, \textbf{1}, \textbf{8}, \textbf{3}, \textbf{6}, \textbf{2}. Оказывается, построить такой массив можно за линейное время. Ваша задача будет полностью противоположной: по заданным \textbf{p(1)}, \textbf{p(2)}, \textbf{p(3)}, ..., \textbf{p(n)} следует проверить, существует ли хотя бы один текст из прописных букв английского алфавита, для которого заданная последовательность будет суффиксным массивом. Если ответ положительный, то вывести любой такой текст. Иначе вывести \textbf{-1}. \InputFile Входные данные состоят из нескольких описаний суффиксных массивов. Первая строка содержит количество тестов \textbf{t} (\textbf{t} ≤ \textbf{100}). Каждое описание начинается со строки, содержащей длину текста и массива \textbf{n} (\textbf{1} ≤ \textbf{n} ≤ \textbf{500000}). Следующая строка содержит целые числа \textbf{p(1)}, \textbf{p(2)}, ..., \textbf{p(n)}. Считайте, что \textbf{1} ≤ \textbf{p(i)} ≤ \textbf{n} и ни одно из значений \textbf{p(i)} не встречается дважды. Размер входных данных не превышает \textbf{50} MB. \OutputFile Для каждого теста вывести любой текст, удовлетворяющий заданному суффиксному массиву. Если требуемого текста из прописных букв английского алфавита не существует, то вывести \textbf{-1}.
Лимит времени 3 секунды
Лимит использования памяти 32 MiB
Входные данные #1
6
2 
1 2 
2 
2 1 
3 
2 3 1 
6 
3 4 5 1 2 6 
14 
3 10 2 12 14 5 13 4 1 8 6 11 7 9 
7 
5 1 7 4 3 2 6
Выходные данные #1
ab
aa
bab
suffix
reconstruction
issofun
Источник Central European Programming Contest 2008, Wroclaw, Poland, November 28-30, 2008