Pagini recente » Cod sursa (job #1372270) | Cod sursa (job #2449570) | Cod sursa (job #2823712) | Cod sursa (job #2108790) | Cod sursa (job #2468749)
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int phi[2000001];
vector <int> sol;
int main()
{ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int n,m,i;
string s,b;
cin >> s >> b; int cv = s.size();
s += "#";
s += b;
n = s.size();
for(i = 1;i < n;i++){
int j = phi[i-1];
while(s[i] != s[j] && j > 0){
j = phi[j - 1];
}
if(s[i] == s[j]){
j++;
}
phi[i] = j;
if(phi[i] == cv){
sol.push_back(i - 2 * cv);
}
}
cout << sol.size() << "\n";
for(auto x : sol)
cout << x << " ";
return 0;
}