Pagini recente » Cod sursa (job #792353) | Cod sursa (job #1889086) | Profil M@2Te4i | Statistici Marius (m.olariu) | Cod sursa (job #1936664)
#include <fstream>
#include<vector>
using namespace std;
string a,b;
int urm[2000000],k,nrsol;
vector<int> sol;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int main()
{
f>>a>>b;
urm[0]=-1;
for(int i=1; i<a.size(); i++)
{
while(k>=0 && a[k]!=a[i]) k=urm[k];
urm[i]=k++;
}
k=0;
for(int i=0; i<b.size(); i++)
{
while(k>=0 && a[k]!=b[i]) k=urm[k];
k++;
if(k==a.size())
{
nrsol++;
sol.push_back(i-k+1);
k=urm[k]+1;
}
}
g<<nrsol<<'\n';
for(int i=0; i<min(nrsol,1000); i++)
g<<sol[i]<<' ';
return 0;
}