Pagini recente » Cod sursa (job #1860580) | Cod sursa (job #1391383) | Cod sursa (job #2641170) | Cod sursa (job #1587073) | Cod sursa (job #2154199)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int i,j,ya,yb,k,nr,pos[1001],p[2000001];
string a,b;
int main()
{
getline(fin,a);
getline(fin,b);
ya=a.length();
yb=b.length();
for(i=ya;i>0;i--)
a[i]=a[i-1];
a[0]=' ';
for(i=yb;i>0;i--)
b[i]=b[i-1];
b[0]=' ';
for(i=2;i<=ya;++i)
{
while(k&&a[k+1]!=a[k])
k=p[k];
if(a[k+1]==a[k])
++k;
p[i]=k;
}
for(i=1;i<=yb;++i)
{
while(k&&a[k+1]!=b[i])
k=p[k];
if(a[k+1]==b[i])
++k;
if(k==ya)
{
k=p[ya];
nr++;
if(nr<=1000)
pos[nr]=i-ya;
}
}
fout<<nr<<'\n';
if(nr>1000)
nr=1000;
for(i=1; i<=nr; i++)
fout<<pos[i]<<" ";
return 0;
}