Pagini recente » Cod sursa (job #1923081) | Cod sursa (job #1847605) | Cod sursa (job #2329273) | Cod sursa (job #3266903) | Cod sursa (job #3163474)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ( "strmatch.in" );
ofstream fout ( "strmatch.out" );
const int N = 2e6;
int p[N], ans[N];
int main () {
string a, b, s;
fin >> a >> b;
s = a + "#" + b;
int k = 0;
for ( int i = 1; i < s.size(); i++ ) {
while ( k != 0 && s[k] != s[i] )
k = p[k - 1];
if ( s[k] == s[i] )
k++;
p[i] = k;
}
k = 0;
int cnt = 0;
for ( int i = 0; i < s.size(); i++ ) {
if ( p[i] == a.size() ) {
cnt++;
if ( k <= 1000 ) {
ans[k] = i - 2 * a.size();
k++;
}
}
}
fout << cnt << "\n";
for ( int i = 0; i < k; i++ )
fout << ans[i] << " ";
return 0;
}