Pagini recente » Cod sursa (job #778084) | Cod sursa (job #432487) | Monitorul de evaluare | Istoria paginii planificare/sedinta-20091023 | Cod sursa (job #1387641)
#include <bits/stdc++.h>
using namespace std;
string s,s2;
int i,j,n,k,sol(0);
int pi[4000050];
vector <int> V;
#define minim(a,b) ((a < b) ? a : b)
void kmp()
{
for (int i=1;i<s.size();++i)
{
int k=pi[i-1];
while(s[i]!=s[k] && k>0) k=pi[k-1];
if (s[i]==s[k]) ++k;
pi[i]=k;
}
}
int main(void)
{
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
getline(cin,s);
getline(cin,s2);
int length=s.size();
s+='#'+s2;
kmp();
for (i=0;i<s.size();++i)
if (pi[i]==length)
if (V.size()<=1000) V.push_back(i-2*length);
cout<<V.size()<<"\n";
for (i=0;i<minim(V.size(),1000);++i)
cout<<1LL*V[i]<<" ";
return 0;
}