Pagini recente » Cod sursa (job #2355253) | Cod sursa (job #1300940) | Cod sursa (job #22861) | Rating Blaga Mihai (mihai9913) | Cod sursa (job #3213842)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");ofstream fout("strmatch.out");
const int N=20008;
string p,s;
int pref[N],ans[N],ct;
void Generare_pref()
{
int i,j;
i=0;
for(j=1;j<p.size();j++)
{
while( i>0 and p[i]!=p[j] )
i=pref[i-1]; /// /// /// /// ///
if( p[i]==p[j] )
i++;
pref[j]=i;
}
for(int i=0;i<p.size();i++)
cout << pref[i];
}
void Rezolvare()
{
int i=0,j;
for(j=0;j<s.size();j++)
{
while( i>0 and s[j]!=p[i] )
i=pref[i-1]; /// /// ///
if( s[j]==p[i] )
i++;
if( i==p.size() )
ans[++ct]=j-p.size()+1;
}
}
void Afis(){
/// 100 0poz
fout << ct << "\n";
for(int i=1;i<=min(ct,1000);i++)
fout << ans[i] << " ";
}
int main()
{
fin >> p >> s;
Generare_pref();
Rezolvare();
Afis();
return 0;
}