Go to diff to previous submission
#include <iostream> #include <algorithm> #include <cassert> #include <vector> #include <stack> #include <cstdio> #include <deque> using namespace std; int main() { while(true) { int T; string bug, t; cin >> T >> bug; getline(cin, t); if(!cin) break; deque<int> a; for(int i=0; i<T; ++i) { char c; int current=0; while((c=getchar()) !='\n') { if(c==bug[current]) { current++; if(current >= bug.size()) { if(a.empty()) { current=0; } else { current = a.back(); a.pop_back(); } } } else if(c==bug[0]) { a.push_back(current); current = 1; } else { for(deque<int>::iterator cr=a.begin(); cr!=a.end(); ++cr) { cout << bug.substr(0, *cr); } cout << bug.substr(0,current); a.clear(); putchar(c); current = 0; } } for(deque<int>::iterator cr=a.begin(); cr!=a.end(); ++cr) { cout << bug.substr(0, *cr); } cout << bug.substr(0,current); a.clear(); putchar(c); current = 0; //putchar('\n'); } } return 0; }