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

Задача . E2. Покраска строки (сложная версия)


Это сложная версия задачи. Задачи отличаются друг от друга, но простая версия почти является подзадачей сложной версии. Обратите внимание на то, что ограничения и формат вывода различаются.

Дана строка \(s\), состоящая из \(n\) строчных латинских букв.

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

После покраски вы можете поменять местами два любых соседних символа строки, которые раскрашены в разные цвета. Вы можете применить эту операцию произвольное (возможно, нулевое) количество раз.

Цель — сделать строку отсортированной, т.е. все символы должны быть расположены в алфавитном порядке.

Ваша задача – найти минимальное количество цветов, которое нужно, чтобы раскрасить строку так, что после раскраски она может быть отсортирована с помощью какой-либо последовательности шагов. Обратите внимание: вам нужно восстановить только раскраску, но не последовательность шагов.

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

Первая строка входных данных содержит одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — длину строки \(s\).

Вторая строка входных данных содержит строку \(s\), состоящую ровно из \(n\) строчных латинских букв.

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

В первой строке выведите одно целое число \(res\) (\(1 \le res \le n\)) — минимальное количество цветов, которое нужно, чтобы раскрасить строку так, что после раскраски она может быть отсортирована с помощью какой-либо последовательности шагов.

Во второй строке выведите любую возможную раскраску, которая может быть использована, чтобы отсортировать строку с помощью какой-либо последовательности шагов, описанных в условии задачи. Раскраской считается массив \(c\) длины \(n\), где \(1 \le c_i \le res\) и \(c_i\) содержит цвет \(i\)-го символа.


Примеры
Входные данныеВыходные данные
1 9
abacbecfd
2
1 1 2 1 2 1 2 1 2
2 8
aaabbcbb
2
1 2 1 2 1 2 1 1
3 7
abcdedc
3
1 1 1 1 1 2 3
4 5
abcde
1
1 1 1 1 1

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

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