Advertisement
Guest User

Untitled

a guest
Jan 13th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define endl "\n"
  5. #define pb push_back
  6. #define ppb pop_back
  7. #define ff first
  8. #define ss second
  9.  
  10. typedef long long ll;
  11. typedef long double ld;
  12. typedef unsigned long long ull;
  13. typedef unsigned int ui;
  14.  
  15. bool check(string &s) {
  16.     vector<string> fname;
  17.     vector<bool> fcloser;
  18.  
  19.     for(int i = 0; i < s.size(); ) {
  20.         if(s[i] == '>') return false;
  21.         if(s[i] == '<' && s[i + 1] != '/') {
  22.             int p = i + 1;
  23.             string name;
  24.             while(s[p] != '>') {
  25.                 if(p == s.size()) return false;
  26.                 if(s[p] == '/') return false;
  27.                 if(s[p] == '<') return false;
  28.                 name += s[p];
  29.                 p++;
  30.                 if(p == s.size()) return false;
  31.             }
  32.             fname.pb(name);
  33.             fcloser.pb(false);
  34.             i = p + 1;
  35.         } else
  36.             if(s[i] == '<' && s[i + 1] == '/') {
  37.             int p = i + 2;
  38.             string name;
  39.             while(s[p] != '>') {
  40.                 if(s[p] == '/') return false;
  41.                 if(s[p] == '<') return false;
  42.                 name += s[p];
  43.                 p++;
  44.                 if(p == s.size()) return false;
  45.             }
  46.             fname.pb(name);
  47.             fcloser.pb(true);
  48.             i = p + 1;
  49.         }
  50.         else i++;
  51.     }
  52.  
  53.     stack<string> stname;
  54.     stack<bool> stcloser;
  55.     for(int i = 0; i < fname.size(); i++) {
  56.         if(fcloser[i]) {
  57.             if(stname.empty()) return false;
  58.             if(stcloser.top()) return false;
  59.             if(stname.top() != fname[i]) return false;
  60.             stname.pop();
  61.             stcloser.pop();
  62.         } else {
  63.             stname.push(fname[i]);
  64.             stcloser.push(fcloser[i]);
  65.         }
  66.     }
  67.  
  68.     if(!stname.empty()) return false;
  69.  
  70.     return true;
  71. }
  72.  
  73. ///Hi There!
  74. int main(int argc, char **argv)
  75. {
  76.     ios_base::sync_with_stdio(false);
  77.     cin.tie(nullptr);
  78.     cout.tie(nullptr);
  79. #ifdef LOCAL
  80.     freopen("input.txt", "r", stdin);
  81.     freopen("output.txt", "w", stdout);
  82. #else
  83.     freopen("input.txt", "r", stdin);
  84.     freopen("output.txt", "w", stdout);
  85. #endif
  86.  
  87.     const string sl = "qwertyuiopasdfghjklzxcvbnm<>/";
  88.     string s;
  89.  
  90.     cin >> s;
  91.     for(int i = 0; i < s.size(); i++) {
  92.         for(int j = 0; j < sl.size(); j++) {
  93.             if(sl[j] == s[i]) continue;
  94.             char t = s[i];
  95.             s[i] = sl[j];
  96.             if(check(s)) {
  97.                 cout << s;
  98.                 return 0;
  99.             }
  100.             s[i] = t;
  101.         }
  102.     }
  103.  
  104.     return EXIT_SUCCESS;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement