Advertisement
Al3XS0n

Untitled

Oct 28th, 2020
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4.  
  5. int main() {
  6. bool wasGlobal = false;
  7. std::stack<std::string> programStack;
  8. std::string s, tmp, answer = "YES";
  9.  
  10. getline(std::cin, s);
  11.  
  12. for (int i = 0; i < s.size(); ++i) {
  13. if (s[i] == '<') {
  14. tmp.clear();
  15.  
  16. int j = i + 1;
  17. bool isOpen = true;
  18. bool isCorrectClosed = false;
  19.  
  20. if (s[j] == '/') {
  21. isOpen = false;
  22. j++;
  23. }
  24. while (j < s.size() && s[j] != '>') {
  25. tmp += s[j++];
  26. }
  27. if (j < s.size() && s[j] == '>') {
  28. isCorrectClosed = true;
  29. }
  30. if (!isCorrectClosed) {
  31. answer = "NO";
  32. break;
  33. }
  34. if (isOpen) {
  35. if (programStack.empty() && wasGlobal) {
  36. answer = "NO";
  37. break;
  38. }
  39. wasGlobal = true;
  40. programStack.push(tmp);
  41. } else {
  42. if (programStack.empty() || programStack.top() != tmp) {
  43. answer = "NO";
  44. break;
  45. }
  46. programStack.pop();
  47. }
  48. i = j;
  49. } else {
  50. if (programStack.empty()) {
  51. answer = "NO";
  52. break;
  53. }
  54. }
  55. }
  56. if (!programStack.empty() || s.empty()) {
  57. answer = "NO";
  58. }
  59. std::cout << answer;
  60. return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement