Pagini recente » Cod sursa (job #105359) | Cod sursa (job #2623891) | Cod sursa (job #909664) | Cod sursa (job #1632292) | Cod sursa (job #1138942)
#include <fstream>
#include <cstring>
using namespace std;
int n,p[2000001],sol[1000],ns;
char a[2000001],b[2000001];
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int main()
{
int i,q;
fin>>(a+1)>>(b+1);
n=strlen(a+1);
for(i=2,q=0;a[i];++i)
{
while(q && a[q+1]!=a[i])
q=p[q];
if(a[q+1]==a[i])
++q;
p[i]=q;
}
for(i=1,q=0;b[i];++i)
{
while(q && a[q+1]!=b[i])
q=p[q];
if(a[q+1]==b[i])
++q;
if(q==n)
{
q=p[n];
if(ns<1000)
sol[ns]=i-n;
++ns;
}
}
fout<<ns<<"\n";
ns=min(ns,1000);
for(i=0;i<ns;++i)
fout<<sol[i]<<" ";
fout<<"\n";
return 0;
}