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

Аналізуючи бітові (ще й спеціальні) рядки

Аналізуючи бітові (ще й спеціальні) рядки

Ви думаєте, що аналізувати рядки просто? Це так, але лише якщо Ви не у ві сні. Але Ви спите і Вам сниться сон. Несподівано, правда ж? Але... я боюсь, що це не сон, у якому Ви хотіли б опинитись. У Вашому сні є рдок бітів, довгий рядок бітів, з яким Вам доведеться мати справу. І Ви чітко розумієте, що потрібно зробити, щоб залишити цей жахливий сон прямо зараз: необхідно знайти \textit{кращий} \textit{спеціальний} рядок. На щастя, Ви учора прочитали книжку по теорії спеціальних рядків. Вам вдалось лише згадати дивне визначення спеціальних рядків, яке виглядало наступним чином. Нехай у Вас є рядок бітів \textbf{T }довжини \textbf{n}. Біти \textbf{T} позначимо через \textbf{T_1}, \textbf{T_2}, ..., \textbf{T_n}. Позначимо через \textbf{A}(\textbf{i}, \textbf{j}) та \textbf{B}(\textbf{i}, \textbf{j}) кількість \textbf{0}-бітів та \textbf{1}-бітів серед \textbf{T_i}, \textbf{T_\{i+1\}}, ..., \textbf{T_\{j \}}відповідно. Рядок \textbf{T }називається спеціальним, якщо для кожного \textbf{i} між \textbf{1 }та \textbf{n }включно має місце наступне співвідношення: \textbf{A}(\textbf{1}, \textbf{i}) ≥ \textbf{B}(\textbf{1}, \textbf{i}) та \textbf{A}(\textbf{i}, \textbf{n}) ≤ \textbf{B}(\textbf{i}, \textbf{n}). Проте Вас не задовольняє будь-який спеціальний рядок. Вам потрібен найкращий спеціальний рядок. Сон був занадто дивним, тому і правило, яке визначає, який з рядків кращий, також виглядає дуже дивним. Нехай \textbf{L_1} та \textbf{L_2} - довжини двох рядків, а \textbf{P_1 }та \textbf{P_2} - кількість разів, які вони зустрічаються у вхідному рядку \textbf{S} у якості підрядків відповідно. Перший рядок вважається кращим другого, якщо \textbf{L_1∙P_1} > \textbf{L_2∙P_2}. Отже, Ваша задача проста... чи ні? Знайдіть найкращий спеціальний рядок - такий спеціальний рядок, що жоден з інших спеціальних рядків не кращий нього. \InputFile Один рядок \textbf{S} (\textbf{2} ≤ |\textbf{S}| ≤ \textbf{2*10^5}), який складається з нулів та одиниць. \OutputFile Перший рядок повинен містити значення \textbf{L∙P}, де \textbf{L} - довжина найкращого спеціального рядка, а \textbf{P }- число його входжень у \textbf{S }в якості підрядка. Другий рядок повинен містити сам найкращий рядок. Якщо таких є декілька, то виведіть довільний. Гарантується, що як мінімум один спеціальний рядок є підрядоком \textbf{S}.
Ліміт часу 3 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
00111001110101
Вихідні дані #1
8
0011
Автор Геннадій Короткевич
Джерело Gennady Korotkevich Contest 1, Petrozavodsk Training Camp, Day 1, Friday, August 23, 2013