RT
https://www.luogu.com.cn/record/133052728
#include<bits/stdc++.h>
#define int long long
using namespace std;
string s,t;
int kmp[1000010];
signed main()
{
cin >> s >> t;
int n=s.size(),m=t.size();
for ( int i = 1 ; i < m ; i++ )
{
int j=kmp[i-1];
while(j&&t[i]!=t[j])
{
j=kmp[j-1];
}
if(s[i]==s[j])
{
j++;
}
kmp[i]=j;
}
int k=0;
for ( int i = 0 ; i < n ; i++ )
{
while(k&&t[k]!=s[i])
{
k=kmp[k-1];
}
if(s[i]==t[k])
{
k++;
}
if(k==m)
{
cout << i-m+2 << endl;
k=kmp[k-1];
}
}
for ( int i = 0 ; i < m ; i++ )
{
cout << kmp[i] << " ";
}
return 0;
}