Pagini recente » Cod sursa (job #1613928) | Cod sursa (job #517691) | Cod sursa (job #44061) | Cod sursa (job #216454) | Cod sursa (job #400775)
Cod sursa(job #400775)
#include<fstream.h>
#include<iostream.h>
#include<string.h>
int main()
{
char a[2000001],b[2000001];
int i,k,c,v[1001],pi[2000001],la,lb,ok=1;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
fin.getline(b,2000001);
fin.getline(a,2000001);
la=strlen(a);
lb=strlen(b);
c=0;
k=-1;
for(i=1;i<lb;i++)
{
while(k>=0 && b[k+1]!=b[i])k=pi[k];
if(b[k+1]==b[i])k++;
pi[i]=k;
}
k=-1;
for(i=1;i<la;i++)
{
while(k>=0 && b[k+1]!=a[i])k=pi[k];
if(b[k+1]==a[i])k++;
if(k+1==lb){
c++;
if(c==1000)ok=0;
if(ok)v[c]=i-lb+1;
}
}
fout<<c<<'\n';
for(i=1;i<=c && i<=1000;i++)fout<<v[i]<<' ';
return 0;
}