Pagini recente » Cod sursa (job #1310280) | Cod sursa (job #594673) | Cod sursa (job #1308534) | Cod sursa (job #1009265) | Cod sursa (job #2468747)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int phi[2000001];
vector <int> sol;
int main()
{
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;
}