#include <iostream> #include <stack> #include <string> bool isMatchingPair(char opening, char closing) { if (opening == '(' && closing == ')') return true; if (opening == '[' && closing == ']') return true; return false; } bool isBalanced(const std::string& expression) { std::stack<char> s; for (char ch : expression) { if (ch == '(' || ch == '[') { s.push(ch); } else if (ch == ')' || ch == ']') { if (s.empty()) { return false; } char top = s.top(); s.pop(); if (!isMatchingPair(top, ch)) { return false; } } } return s.empty(); } int main() { std::string expression; std::cin >> expression; if (isBalanced(expression)) { std::cout << "yes" << std::endl; } else { std::cout << "no" << std::endl; } return 0; } /************************************************************** Problem: 1486 User: panyuchen Language: C++ Result: Accepted Time:31 ms Memory:2080 kb ****************************************************************/