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

Задача . A. Проверка строки


Задача

Темы: реализация *1200

У A есть строка, изначально состоящая из некоторого количество букв «a». Он дал свою строку другу B, который добавил некоторое количество букв «b» в конец этой строки. Так как A и B любят буквы «a» и «b», то после этих операций в строке есть хотя бы по одной букве «a» и «b».

Затем B передал эту строку C, который добавил некоторое количество букв «c» в конец строки. Так как C хороший друг A и B, количество букв «c», которые он добавил к строке, равно количеству букв «a» или количеству букв «b», имеющихся в строке. Возможно такое, что количество букв «c» одновременно равно количеству букв «a» и количеству букв «b».

Вам дана строка и вы должны определить могла ли эта строка быть получена в результате описанных выше действий. Если это возможно, выведите «YES», иначе, выведите «NO» (без кавычек).

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

В единственной строке входных данных задана строка \(S\) (\( 1 \le |S| \le 5\,000 \)). Гарантируется, что строка состоит только из строчных латинских букв «a», «b», «c».

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

Выведите «YES» или «NO» в соответствии с условием.

Примечание

Рассмотрим первый пример: количество букв «c» равно количеству букв «a».

Рассмотрим второй пример: несмотря на то, что количество букв «c» равно количеству букв «b», порядок букв неправильный.

Рассмотрим третий пример: количество букв «c» равно количеству букв «b».


Примеры
Входные данныеВыходные данные
1 aaabccc
YES
2 bbacc
NO
3 aabc
YES

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

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