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