Pagini recente » Cod sursa (job #3208713) | Cod sursa (job #2440985) | Cod sursa (job #1564932) | Cod sursa (job #3178831) | Cod sursa (job #2343652)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n,m,l,p[200000],v[1001],nr,i;
char s[200010],t[200010];
int main()
{
f>>s+1;
f>>t+1;
n=strlen(s+1);
m=strlen(t+1);
l=0;
p[1]=0;
for(i=2;i<=n;i++)
{while(l>0&&s[i]!=s[l+1])
l=p[l];
if(s[i]==s[l+1])
l++;
p[i]=l;
}
l=0;
for(i=1;i<=m;i++)
{while(l>0&&t[i]!=s[l+1])
l=p[l];
if(t[i]==s[l+1])
l++;
if(l==n)
{nr++;
if(nr<=1000)
v[nr]=i-n;
l=p[l];
}
}
g<<nr<<endl;
if(nr>1000)
nr=1000;
for(i=1;i<=nr;i++)
g<<v[i]<<" ";
return 0;
}