fork(3) download
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int n;
  10. cin >> n;
  11. char l;
  12. cin.get(l); //считывание конца строки после числа
  13. for(int z=0;z<n;z++){
  14. bool q=1; //переменная "фиксирующая" ошибку
  15. char hab;
  16. string str;
  17. getline(cin,str); //используем, чтобы читать до конца строки
  18. int j=str.size(); //размер строки ( кол-во обрабатываемых символов)
  19. stack<char> res; //стэк скобок
  20. for(int i=0;i<j;i++){
  21. if((str[i]=='(')||(str[i]=='[')) //если открывающая скобка - то кладем в стэк
  22. res.push(str[i]);
  23. else{ //если закрывающая скобка
  24. if(!res.empty()){ //если стэк не пуст
  25. hab=res.top(); //вытаскиваем последний элемент
  26. if(str[i]==')'){ //сверяем на типы скобок
  27. if(hab=='('){
  28. res.pop();
  29. }
  30. else{
  31. q=0;
  32. cout << "No" << endl;
  33. break;
  34.  
  35. }
  36. }
  37. else{
  38. if(hab=='['){ //второй тип скобок
  39. res.pop();
  40. }
  41. else{
  42. q=0;
  43. cout << "No" << endl;
  44. break;
  45. }
  46. }
  47. }
  48. else{ //если стэк пуст - то ошибочка вышла!
  49. cout << "No" << endl;
  50. q=0;
  51. break;
  52. }
  53. }
  54.  
  55. }
  56. if(q){
  57. if(res.empty()) //собственно ответ
  58. cout << "Yes" << endl;
  59. else
  60. cout << "No" << endl;
  61. }
  62.  
  63. }
  64. return 0;
  65. }
Success #stdin #stdout 0s 3280KB
stdin
3
([])
(([()])))
([()[]()])()
stdout
Yes
No
Yes