Pagini recente » Cod sursa (job #2055430) | Cod sursa (job #2814542) | Cod sursa (job #1734577) | Cod sursa (job #2767374) | Cod sursa (job #1767477)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
char a[2000001],b[2000001];
int i,j,k,l[2000001],z,v[1001],t;
void KMP()
{
k=-1;
for(t=0; t<strlen(b); t++)
{
while(k>0 && a[k+1]!=b[t])
k=l[k];
if(a[k+1]==b[t])
k++;
if(k==strlen(a)-1)
{
if(z<1000)
v[++z]=t-k;
k=l[k];
}
}
}
int main()
{
fin>>a>>b;
KMP();
fout<<z<<'\n';
for(i=1; i<=z; i++)
fout<<v[i]<<' ';
return 0;
}