bugs.cpp
#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;
}