能改的都改了,本机测试数据都能过,但是提交从上午re到现在QwQ
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
char s1[100001],s2[100001];
int Next[100001],ii=0,jj=0;
inline void FindNext()
{
Next[0]=Next[1]=0;
for(ii=1;ii<n;ii++)
{
for(;jj>0&&s1[ii]!=s1[jj];jj=Next[jj]);
if(s1[ii]==s1[jj])jj++;
Next[ii]=jj;
}
}
inline int Find_string()
{
jj=-1;
for(ii=0;ii<m;ii++)
{
for(;(jj>0)&&(s1[jj+1]!=s2[ii]);)jj=Next[jj];//cout<<jj<<' ';
if(s1[jj+1]==s2[ii])jj++;
if(jj==n-1)
{
//cout<<ii<<' '<<jj<<endl;
cout<<ii-jj+1<<endl;
//cout<<a1<<' '<<b1<<' '<<i-j+1<<' '<<a[yu]<<endl;
jj=Next[jj];
}
}
}
int main()
{
//freopen("a.in","r",stdin);
//memset(head,-1,sizeof(head));
//cin>>n>>m;
scanf("%s%s",s2,s1);
n=strlen(s1);
m=strlen(s2);
FindNext();
Find_string();
//cout<<n<<' '<<m<<endl;
for(int i=0;i<n;i++)cout<<Next[i]<<' ';
cout<<endl;
return 0;
}