Pagini recente » Cod sursa (job #629555) | Cod sursa (job #2399020) | Cod sursa (job #2723139) | Cod sursa (job #2342535) | Cod sursa (job #2491562)
#include <bits/stdc++.h>
using namespace std;
int phi[4000002];
vector <int> sol;
int main()
{
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
string a,b;
int init;
int cnt = 0;
cin >> a >> b;
init = a.size();
a += "#";
a += b;
int n = a.size();
for(int i = 1;i < n;i++){
int j = phi[i - 1];
while(a[j] != a[i] && j > 0){
j = phi[j - 1];
}
if(a[j] == a[i])
j++;
phi[i] = j;
if(phi[i] == init)
sol.push_back(i - 2 * init);
}
cout << sol.size() << "\n";
for(int i = 0;i < sol.size();i++)
cout << sol[i] << " ";
return 0;
}