Pagini recente » Cod sursa (job #2733760) | Cod sursa (job #2140274) | Cod sursa (job #1769527) | Cod sursa (job #1984675) | Cod sursa (job #1449362)
#include <fstream>
#include <string.h>
#define dim 2000001
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int i,k,poz[1001],p[dim],n,m,nrpoz;
char s1[dim],s2[dim];
int main()
{
fin>>s1>>s2;
n=strlen(s1);
m=strlen(s2);
for(i=1;i<n;i++)
{
while(k>0 && s1[i] != s1[k])
{
k=p[k];
}
if(s1[i]==s1[k])
{
k++;
}
p[i]=k;
}
for(i=0;i<m;i++)
{
while(k>0 && s2[i] != s1[k])
{
k=p[k];
}
if(s2[i] == s1[k])
{
k++;
}
if(k == n)
{
if(nrpoz<1000)
poz[++nrpoz]=i-n+1;
else
nrpoz++;
k=p[k-1];
}
}
fout<<nrpoz<<'\n';
for(i=1;i<=nrpoz&& i<=1000;i++)
{
fout<<poz[i]<<' ';
}
return 0;
}