Pagini recente » Cod sursa (job #1108239) | Cod sursa (job #950372) | Cod sursa (job #1964085) | Cod sursa (job #2775158) | Cod sursa (job #1445707)
#include<fstream>
#include<string>
#include<vector>
#define min(a,b) a<b ? a : b
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
string text, pattern , s;
int n, pi[1<<22], L;
vector<int> v;
int main() {
cin>>pattern>>text;
s=pattern+'/'+text;
for (int i=1;i<s.size();i++)
{
int j=pi[i-1];
while (j>0 && s[j]!=s[i]) j=pi[j-1];
pi[i]=j+(s[i]==s[j]);
}
for (int i=0;i<text.size();i++)
if (pi[pattern.size()+1+i]==pattern.size())
v.push_back(i-pattern.size()+1);
L=min(1000,v.size());
cout<<v.size()<<endl;
for (int i=0;i<L;i++)
cout<<v[i]<<' ';
return 0; }