Pagini recente » Cod sursa (job #630807) | Cod sursa (job #2169578) | Cod sursa (job #875401) | Cod sursa (job #2105999) | Cod sursa (job #2714317)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a,b;
int c[200000],l,v[20000],i,cnt;
signed main()
{
fin>>a>>b;
for(i=1;i<a.size();i++)
{while(a[l]!=a[i] && l!=0)
l=c[l-1];
if(a[l]==a[i])
l++;
c[i]=1;
}
for(i=0;i<b.size();i++)
{while(a[l]!=b[i] && l!=0)
l=c[l-1];
if(a[l]==b[i])
l++;
if(l==a.size())
{cnt++;
v[cnt]=i-a.size()+1;
l=c[l-1];
}
}
fout<<cnt<<'\n';
if(cnt>1000)cnt=1000;
for(i=1;i<=cnt;i++)
fout<<v[i]<<" ";
return 0;
}