Pagini recente » Cod sursa (job #2757850) | Cod sursa (job #2397143) | Cod sursa (job #2293547) | Cod sursa (job #2974062) | Cod sursa (job #3228476)
#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = a; i <= b; ++i)
using namespace std;
const string TASK("strmatch");
ifstream fin(TASK + ".in");
ofstream fout(TASK + ".out");
#define cin fin
#define cout fout
const int N = 4e6 + 9;
int pi[N];
int main()
{
string a, b;
cin >> a >> b;
int n = a.size(), m = b.size();
a = a + '$' + b;
for(int i = 1; i <= n + m; ++i)
{
int j = pi[i - 1];
while(j && a[j] != a[i])
j = pi[j - 1];
if(a[j] == a[i])j ++;
pi[i] = j;
}
int cnt = 0;
vector<int> app;
FOR(i, n, n + m)
if(pi[i] == n)
{
cnt ++;
if(app.size() < 1000)
app.push_back(i - 2 * n);
}
cout << cnt << '\n';
for(auto i : app)cout << i << ' ';
return 0;
}