Pagini recente » Cod sursa (job #949482) | Cod sursa (job #15126) | Cod sursa (job #689687) | Cod sursa (job #204327) | Cod sursa (job #3163476)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define nmax
int pi[5000000];
vector <int> v;
int main() {
string a, b, s;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int i, k, rez = 0;
cin >> a >> b;
k = 0;
s = a + '#' + b;
for( i = 1; i < s.size(); i++ ) {
while( k != 0 && s[k] != s[i] )
k = pi[k-1];
if( s[k] == s[i] )
k++;
pi[i] = k;
//cout << k << " ";
if( k == a.size() ) {
rez++;
if( v.size() < 999 )
v.push_back( i - 2*a.size() );
}
}
//cout < "\n";
cout << rez << "\n";
for( i = 0; i < v.size(); i++ )
cout << v[i] << " ";
return 0;
}