12002. Хороший рядок


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Рядок, що складається з малих англійських літер, '(', та ')', вважається хорошим рядком, якщо ви можете зробити його порожнім за допомогою наступної процедури:

  • спочатку видаліть усі малі англійські літери.
  • Потім кілька разів видаліть послідовний (), поки це можливо.

Наприклад, ((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

Коментарі

Ще немає коментарів.