Pagini recente » Cod sursa (job #2371357) | Cod sursa (job #1071527) | Cod sursa (job #2966197) | Cod sursa (job #2766093) | Cod sursa (job #2800799)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a, b, s;
int pi[4000005], k, afis, ans[1005];
int main()
{
fin >> a >> b;
s = '$' + a + '$' + b;
k = 0;
for(int i = 2; i < (int) s.size(); i++)
{
while(k != 0 && s[i] != s[k + 1])
k = pi[k];
if(s[i] == s[k + 1])
k++;
pi[i] = k;
if(pi[i] == a.size())
{
afis++;
ans[afis] = i - 1 - 2 * a.size();
}
}
fout << afis << '\n';
for(int i = 1; i <= min(afis, 1000); i++)
fout << ans[i] << ' ';
return 0;
}