Pagini recente » Cod sursa (job #2169863) | Cod sursa (job #170902) | Cod sursa (job #2261778) | Cod sursa (job #3139282) | Cod sursa (job #3237921)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int i, n, m, k, p[4000005], r, q;
string s1, s2, s;
int main()
{
fin>>s1>>s2;
n=s1.size();
m=s2.size();
s=s1+'#'+s2;
p[0]=-1;
for (i=1; i<=n+m+1; i++) {
k=p[i-1];
while (k>=0 && s[k]!=s[i-1]) k=p[k];
p[i]=k+1;
if (p[i]==n) {q++;}
}
fout<<q<<'\n';
for (i=2*n; i<=n+m+1; i++) {
if (p[i]==n) {
r++;
if (r==1001) break;
fout<<i-2*n-1<<' ';
}
}
return 0;
}