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

Задача . G. Максимизируй оставшуюся строку


Вам задана строка \(s\), состоящая из строчных букв латинского алфавита. Пока в строке \(s\) есть хотя бы один символ, повторяющийся хотя бы дважды, вы выполняете следующую операцию:

  • вы выбираете индекс \(i\) (\(1 \le i \le |s|\)), такой что символ на позиции \(i\) встречается хотя бы два раза в строке \(s\), и удаляете символ на позиции \(i\), то есть заменяете \(s\) на \(s_1 s_2 \ldots s_{i-1} s_{i+1} s_{i+2} \ldots s_n\).

Например, если \(s=\)«codeforces», то вы можете применить следующую последовательность операций:

  • \(i=6 \Rightarrow s=\)«codefrces»;
  • \(i=1 \Rightarrow s=\)«odefrces»;
  • \(i=7 \Rightarrow s=\)«odefrcs»;

По заданной строке \(s\) найдите лексикографически максимальную строку, которая может быть получена после применения некоторой последовательности операций, оставляющей в строке только уникальные символы.

Строка \(a\) длины \(n\) лексикографически меньше строки \(b\) длины \(m\), если:

  • существует индекс \(i\) (\(1 \le i \le \min(n, m)\)), такой что первые \(i-1\) символов у строк \(a\) и \(b\) совпадают, а \(i\)-й символ строки \(a\) меньше, чем \(i\)-й символ строки \(b\);
  • или первые \(\min(n, m)\) символов у строк \(a\) и \(b\) совпадают и \(n < m\).

Например строка \(a=\)«aezakmi» лексикографически меньше строки \(b=\)«aezus».

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

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

Каждый набор входных данных характеризуется строкой \(s\), состоящей из строчных букв латинского алфавита (\(1 \le |s| \le 2 \cdot 10^5\)).

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

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

Для каждого набора входных данных выведите лексикографически максимальную строку, которая может быть получена после применения некоторой последовательности операций, оставляющей в строке только уникальные символы.


Примеры
Входные данныеВыходные данные
1 6
codeforces
aezakmi
abacaba
convexhull
swflldjgpaxs
myneeocktxpqjpz
odfrces
ezakmi
cba
convexhul
wfldjgpaxs
myneocktxqjpz

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

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