Ваша задача — для каждого префикса строки проверить, можно ли его разбить на 1, 2, 3, 4, 5, …, 31 непустой палиндром.
Исходные данные
На вход подаётся строка из n строчных латинских букв (1 ≤ n ≤ 300 000).
Результат
Выведите n целых неотрицательных чисел, разделяя их переводами строк.
В i-й (1 ≤ i ≤ n) строке требуется выдать число-маску, в которой (j − 1)-й бит равен единице, если префикс строки длины i можно разбить на j палиндромов.
Пример
исходные данные | результат |
---|
abaa
| 1
2
5
14
|
Замечания
110 = 12; 210 = 102; 510 = 1012; 1410 = 11102;
abaa = aba|a = a|b|aa = a|b|a|a.
Автор задачи: Михаил Рубинчик
Источник задачи: Ural FU Dandelion contest. Petrozavodsk training camp. Summer 2014