Pagini recente » lh10-2 | Cod sursa (job #1003400) | Cod sursa (job #20502) | Cod sursa (job #2953948) | Cod sursa (job #2953985)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("strmatch.in");
ofstream fout ("strmatch.out");
const int MAXN=4000001;
int dp[MAXN],check,ok;
string s,s1;
vector <int> rez;
int main()
{
fin >>s>>s1;
check=s.size ();
s.push_back ('#');
s+=s1;
dp[0]=0;
for (int i=1;i<s.size ();++i){
int j=dp[i-1];
while (j>0 and s[j]!=s[i])
j=dp[j-1];
/*if (i==s.size ()-1){
fout <<dp[1]<<'\n';
}*/
dp[i]=j+1;
if (s[i]!=s[j]) dp[i]=0;
if (dp[i]==check){
ok++;
if (ok<=1000)
rez.push_back (i-2*check);
}
}
//for (int i=0;i<s.size ();++i){
// fout <<dp[i]<<' ';
//}
//fout <<'\n'<<'\n';
fout <<ok<<'\n';
for (int i=0;i<rez.size ();++i){
fout <<rez[i]<<' ';
}
fin.close ();
fout.close ();
return 0;
}