Pagini recente » Cod sursa (job #1745258) | Cod sursa (job #2880838) | Cod sursa (job #2531472) | Cod sursa (job #2111769) | Cod sursa (job #2714284)
#include <fstream>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
string t, s;
int k, sol[10000], p[10000], L;
int main()
{
f >> s >> t;
for (int i=1; i<s.size(); i++){
while (L != 0 && s[L] != t[i])
L = p[L];
if (s[i] == s[L]) L ++;
p[i] = L;
}
L = 0;
for (int i=0; i<t.size(); i++){
while (L != 0 && s[L] != t[i]){
L = p[L];
}
if (t[i] == s[L]) L ++;
if (L == s.size()){
sol[++ k] = i - s.size() + 1;
L = p[L - 1];
}
}
g << k << '\n';
for (int i=1; i<= k; i++)
g << sol[i] << ' ';
}