Pagini recente » Cod sursa (job #1345177) | Cod sursa (job #579778) | Cod sursa (job #1169090) | Cod sursa (job #866511) | Cod sursa (job #2847116)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("strmatch.in");
ofstream fout("strmatch.out");
string a,b;
vector<int> ans;
int p[4000005],ap;
int main()
{
fin >> a;
int m = a.size();
fin >> b;
a += '#';
a += b;
int n = a.size();
p[0] = 0;
for(int i = 1 ; i < n ; i ++)
{
int j = p[i-1];
while(j && a[i]!=a[j])
j = p[j-1];
if(a[i]==a[j])
j++;
p[i]=j;
if(p[i]==m)
{
++ap;
ans.push_back(i-2*m);
}
}
fout << ap << '\n';
for(auto it:ans)
fout << it << ' ';
return 0;
}