Pagini recente » Cod sursa (job #1171308) | Cod sursa (job #1387401) | Cod sursa (job #2327922) | Cod sursa (job #1404246) | Cod sursa (job #3170205)
#include<fstream>
using namespace std;
ifstream in ("strmatch.in");
ofstream out ("strmatch.out");
int i,j,pi[2000005], 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+1;
j = pi[j];
}
}
out << occ <<"\n";
for (int i = 1; i <= min(occ,1000); i ++) {
out << potriviri[i] <<" ";
}
return 0;
}