Pagini recente » Cod sursa (job #2408936) | Cod sursa (job #1679770) | Cod sursa (job #3002445) | Cod sursa (job #812073) | Cod sursa (job #1317006)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 2000013
string s,s2;
int KMP[Nmax];
int Answer[Nmax];
int main(void)
{
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int k=0,sol=0;
getline(cin,s);
getline(cin,s2);
int Sz=s.size();
s+='#'+s2;
for (int i=1;i<s.size();++i)
{
while(k>0 && s[k]!=s[i]) k=KMP[k-1];
if (s[k]==s[i]) ++k;
KMP[i]=k;
}
for (int i=Sz+1;i<s.size();++i)
if (KMP[i]==Sz)
Answer[++sol]=i-2*Sz;
cout<<sol<<"\n";
for (int i=1;i<=sol;++i)
cout<<Answer[i]<<" ";
return 0;
}