Pagini recente » Cod sursa (job #2399607) | Cod sursa (job #2897087) | Cod sursa (job #284125) | Cod sursa (job #2916449) | Cod sursa (job #3170208)
#include<fstream>
using namespace std;
ifstream in ("strmatch.in");
ofstream out ("strmatch.out");
int i,j,pi[4000005], potriviri[10005],occ,len;
string s,s2;
int main (void) {
in >> s;
in >> s2;
len = s.size();
s = s + '#' + s2;
pi[0] = -1;
j = -1;
for (int i = 0; i < s.size(); i ++) {
while (j >= 0 && s[i] != s[j]) {
j = pi[j];
}
j ++;
pi[i+1] = j;
if (j == len) {
occ ++;
if (occ <= 1000)
potriviri[occ] = i-len*2;
j = pi[j];
}
}
out << occ <<"\n";
for (int i = 1; i <= min(occ,1000); i ++) {
out << potriviri[i] <<" ";
}
return 0;
}