Pagini recente » Cod sursa (job #669021) | Cod sursa (job #2722327) | Cod sursa (job #1705250) | Cod sursa (job #3122135) | Cod sursa (job #2288887)
#include <fstream>
#include <cstring>
using namespace std;
char c[2000005],a[2000005];
int i,k,p[2000005],nr,n,m,l,sol[2000005];
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int main()
{
fin>>c+1;
fin>>a+1;
n=strlen(c+1);
m=strlen(a+1);
k=0;
for(i=2;i<=n;i++)
{
for(;k!=0&&c[k+1]!=c[i];) k=p[k];
if(c[k+1]==c[i]) k++;
p[i]=k;
}
k=0;
for(i=1;i<=m;i++)
{
for(;k!=0&&c[k+1]!=a[i];) k=p[k];
if(c[k+1]==a[i]) k++;
if(k==n) {nr++;++l;sol[l]=i-n;}
}
fout<<nr<<'\n';
for(i=1;i<=min(l,1000);i++) fout<<sol[i]<<" ";
return 0;
}