Pagini recente » Cod sursa (job #1569223) | Rating Lazar Razvan Gabriel (RazvanLazar2004) | Cod sursa (job #2002584) | Cod sursa (job #3282021) | Cod sursa (job #2277189)
#include<fstream>
#include<string>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int p[2000200];
int main(){
string pattern, text;
int q = 0, ans = 0, ans_v[2000200];
cin >> pattern >> text;
for(int i = 1; i <= text.size(); i++){
while(q && text[i-1] != pattern[q+1]){
q = p[q];
}
if(text[i-1] == pattern[q+1]){
q++;
if(q == pattern.size()-1){
q = p[q];
ans_v[ans] = i - pattern.size();
ans++;
}
}
p[i-1] = q;
}
cout << ans;
cout << "\n";
for(int i = 0 ; i < ans; i++)
cout << ans_v[i] << " ";
}