12002. Хороший рядок
Рядок, що складається з малих англійських літер, '(', та ')', вважається хорошим рядком, якщо ви можете зробити його порожнім за допомогою наступної процедури:
- спочатку видаліть усі малі англійські літери.
- Потім кілька разів видаліть послідовний (), поки це можливо.
Наприклад, ((a)ba) є хорошим рядком, тому що видалення всіх малих літер англійської мови дає (()), з якого ми можемо видалити послідовний () у 2-му та 3-му символах, щоб отримати (), який у свою чергу закінчується порожнім рядком.
Вам надано хороший рядок \(S\). Ми позначаємо \(S_i\) \(i\)-й символ \(S\).
Для кожної малої англійської літери \(a, b, … z\) ми маємо кульку з літерою, написаною на ній. Крім того, у нас є порожня коробка.
Для кожного \(i=1,2, … ,∣S∣\) у цьому порядку Степан виконує наступну операцію, якщо не знепритомніє.
- Якщо \(S_i\) — мала англійська літера, покладіть кульку з написаною на ній літерою в коробку. Якщо м'яч вже в коробці, він непритомніє.
- Якщо \(S_i\) дорівнює (, нічого не робити.
- Якщо \(S_i\) дорівнює ), візьміть максимальне ціле число \(j\), менше за \(i\), щоб символи від \(j\)-го до \(i\)-го \(S\) утворювали хороший рядок. (Ми можемо довести, що таке ціле число \(j\) завжди існує.) Вийміть із коробки всі кульки, які він поклав у \(j\)-ту через \(i\)-ту операцію.
Визначте, чи може Степан виконати послідовність операцій, не знепритомнівши.
Обмеження
- \(1≤∣S∣≤3×10^5\)
- \(S\) є хорошим рядком.
Формат вхідних даних
Перший рядок містить рядок \(S\).
Формат вихідних даних
У вихідний потік виведіть відповідь: Yes або No.
Приклад вхідних даних
((a)ba)
Приклад вихідних даних
Yes
- Для i=1 він нічого не робить.
- Для i=2 він нічого не робить.
- Для i=3 він кладе кульку з написом у коробку.
- Для i=4, j=2 є максимальним цілим числом, меншим за 4, таким чином, що j-й-4-й символи S утворюють хороший рядок, тож він виймає з коробки м’яч із написом.
- Для i=5 він кладе кульку, на якій написано b, у коробку.
- Для i=6 він кладе кульку з написом у коробку.
- Для i=7 j=1 є максимальним цілим числом, меншим за 7, таким чином, що j-й-сьомий символи S утворюють хороший рядок, тому він дістає кульку з написом на ній, а іншу з b, з коробки.
Тому відповідь - Yes.
Приклад вхідних даних
(a(ba))
Приклад вихідних даних
No
- Для i=1 він нічого не робить.
- Для i=2 він кладе кульку з написом a у коробку.
- Для i=3 він нічого не робить.
- Для i=4 він кладе кульку, на якій написано b, у коробку.
- Для i=5 кулька з написом a вже знаходиться в коробці, тому він непритомніє, перериваючи послідовність операцій.
Тому відповідь на цей випадок – No.
Приклад вхідних даних
(((())))
Приклад вихідних даних
Yes
Коментарі