Условие
Дана строка из круглых, квадратных и фигурных скобок. Проверьте, является ли последовательность правильной: каждой закрывающей скобке должна соответствовать последняя ещё не закрытая открывающая скобка того же вида; после обработки строки незакрытых скобок не должно остаться.
Реализуйте собственный класс BracketStack поверх массива char вместимости 10000 с операциями добавления, извлечения и проверки пустоты. Используйте его для проверки последовательности. Готовые контейнеры для хранения стека запрещены. Саму входную строку разрешено хранить в std::string.
Ограничения
Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.
Входные данные
Одна непустая строка длиной от 1 до 10000 символов. Каждый символ — один из (, ), [, ], {, }. Пробельных символов нет.
Выходные данные
Выведите YES, если скобочная последовательность правильная, иначе NO.
Примеры
([]){}
YES
([)]
NO
(()
NO