Advertisement
Josif_tepe

Untitled

Dec 4th, 2022
663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <stack>
  5. using namespace std;
  6. int main() {
  7.     string s, pattern;
  8.     cin >> s >> pattern;
  9.     stack<pair<int, int> > st;
  10.     for(int i = 0; i < s.size(); i++) {
  11.         bool match = false;
  12.         if(s[i] == pattern[0]) {
  13.             st.push({i, 0});
  14.             match = true;
  15.         }
  16.         else if(!st.empty() and s[i] == pattern[st.top().second + 1]) {
  17.             st.top().second++;
  18.             match = true;
  19.         }
  20.         if(!st.empty() and st.top().second == pattern.size() - 1) {
  21.             for(int j = st.top().first; j <= i; j++) {
  22.                 s[j] = '*';
  23.             }
  24.             st.pop();
  25.         }
  26.         if(!match) {
  27.             while(!st.empty()) {
  28.                 st.pop();
  29.             }
  30.         }
  31.     }
  32.     for(int i = 0; i < s.size(); i++) {
  33.         if(s[i] != '*') {
  34.             cout << s[i];
  35.         }
  36.     }
  37.     cout << endl;
  38.         return 0;
  39. }
  40. /*
  41. B***C4
  42.  
  43. BC4
  44.  
  45. {0, 1}
  46.  
  47.  
  48.  */
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement