Pagini recente » Cod sursa (job #842) | Cod sursa (job #1722439) | Cod sursa (job #209829) | Cod sursa (job #2420531) | Cod sursa (job #2471465)
#include <bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define N 4000005
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
typedef long long ll;
string s, t;
ll i, n, m, j, k, lps[N];
vector <int> ans;
int main()
{
fin>>s>>t;
t="."+s+"#"+t;
n=t.size();
lps[1]=0;
for(i=2;i<n;i++)
{
j=i-1;
while(j>0&&t[lps[j]+1]!=t[i])
j=lps[j];
if(j==0)
lps[i]=0;
else
lps[i]=lps[j]+1;
if(lps[i]==s.size())
{
k++;
if(k<=1000)
ans.pb(i-2*s.size()-1);
}
}
fout<<k<<'\n';
for(i=0;i<ans.size();i++)
fout<<ans[i]<<' ';
return 0;
}