Pagini recente » Cod sursa (job #2639005) | Cod sursa (job #22651) | Cod sursa (job #2921430) | Cod sursa (job #2268289) | Cod sursa (job #2847921)
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#define ll long long
using namespace std;
string a,b;
int p[2000001];
vector<int> ans;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int main()
{
ios_base::sync_with_stdio(false);
cin>>a>>b;
for(int i=1;i<a.size();i++)
{
int j=p[i-1];
while(j>0 && a[i]!=a[j])
j=p[j-1];
if(a[i]==a[j])
j++;
p[i]=j;
}
int j=0;
for(int i=0;i<b.size();i++)
{
while(j>0 && b[i]!=a[j])
j=p[j-1];
if(b[i]==a[j])
j++;
if(j==a.size())
{
ans.push_back(i-j+1);
j=p[j-1];
}
}
cout<<ans.size()<<'\n';
for(int i=0;i<=min((int)ans.size()-1,999);i++)
cout<<ans[i]<<' ';
return 0;
}