Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. ios_base::sync_with_stdio(0);
  8. cin.tie(0);
  9. string s, tmp = "";
  10. vector<pair <char, int> > stak;
  11. vector<string > gg;
  12. cin >> s;
  13. s+="<>";
  14. if(s[0] != '<'){
  15. s[0] = '<';
  16. cout << s << endl;
  17. return 0;
  18. }
  19. else if(s[s.size() - 1] != '>'){
  20. s[s.size() - 1] = '>';
  21. cout << s << endl;
  22. return 0;
  23. }
  24. stak.push_back(make_pair('<', 0));
  25. int ind = -1;
  26. for(int i = 1; i < s.size(); ++i){
  27. if(s[i] == '<'){
  28. stak.push_back(make_pair('<',i));
  29. if(stak.size() > 1){
  30. ind = stak[1].second;
  31. break;
  32. }
  33. }
  34. if(s[i] == '>'){
  35. ind = i;
  36. if(s[i + 1] != '<'){
  37. break;
  38. }
  39. stak.pop_back();
  40. }
  41. }
  42. bool flag = false, wtf = false;
  43. for(int i = 1; i < s.size(); ++i){
  44. if(s[i - 1] == '<'){
  45. flag = true;
  46. if(s[i] == '/') wtf = true;
  47. }
  48. if(s[i] == '>' && i != ind){
  49. flag = false;
  50. if (!wtf){
  51. gg.push_back(tmp);
  52. tmp = "";
  53. }
  54. else{
  55. if(gg[gg.size() - 1] == tmp){
  56. gg.pop_back();
  57. tmp = "";
  58. }
  59. else {
  60. gg.push_back(tmp);
  61. break;
  62. }
  63. }
  64. tmp = "";
  65. wtf = false;
  66. }
  67. if((s[i] != '/' || s[i - 1] != '<') && flag){
  68. tmp += s[i];
  69. }
  70. }
  71. flag = 0;
  72. for(int i = 1; i < gg[gg.size() - 1].size() - 1; ++i){
  73. if(gg[gg.size() - 1][i] == '<' || gg[gg.size() - 1][i] == '>'){
  74. flag = 1;
  75. }
  76. }
  77. tmp = "";
  78. for(int i = 0; i < s.size(); ++i){
  79. if(s[i] == '<' || s[i] == '>' || s[i] == '/'){
  80. if(!flag){
  81. if(tmp == gg[gg.size() - 2]){
  82. cout << s.substr(0, i - tmp.size()) + gg[gg.size() - 1] + s.substr(i, s.size() - 2 - i);
  83. return 0;
  84. }
  85. }
  86. else{
  87. if(tmp == gg[gg.size() - 1]){
  88. cout << s.substr(0, i - tmp.size()) + gg[gg.size() - 2] + s.substr(i, s.size() - 2 - i);
  89. return 0;
  90. }
  91. }
  92. tmp = "";
  93. }
  94. else
  95. tmp += s[i];
  96. }
  97. return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement