Pagini recente » Cod sursa (job #1613596) | Cod sursa (job #1945985) | Cod sursa (job #985191) | Cod sursa (job #1339043) | Cod sursa (job #1053161)
#include<cstdio>
#include<cstring>
using namespace std;
const int NMAX = 2000005;
char A[NMAX],B[NMAX];
int N,M,pi[NMAX],q,Cnt,i,Sol[1005];
int main()
{
freopen("strmatch.in","r",stdin);
freopen("strmatch.out","w",stdout);
scanf("%s",A+1); scanf("%s",B+1);
N=strlen(A+1); M=strlen(B+1);
pi[1]=0;
for(i=2;i<=N;i++)
{
while(q && A[q+1]!=A[i]) q=pi[q];
if(A[q+1]==A[i]) q++;
pi[i]=q;
}
for(q=0,i=1;i<=M;i++)
{
while(q && A[q+1]!=B[i]) q=pi[q];
if(A[q+1]==B[i]) q++;
if(q==N && ++Cnt<=1000) Sol[Cnt]=i-N;
}
printf("%d\n",Cnt);
for(i=1;i<=Cnt;i++) printf("%d ",Sol[i]);
return 0;
}