Pagini recente » Cod sursa (job #132134) | Cod sursa (job #2937634) | Cod sursa (job #3002509) | Cod sursa (job #156065) | Cod sursa (job #1341075)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int n,m,i,L,nr;
char a[1200001],b[1200001];
int p[2000001],s[1010];
int main(){
fin>>a+1;
n=strlen(a+1);
L=0;
for(i=2;i<=n;i++){
while(a[i]!=a[L+1] && L!=0)
L=p[L];
if(a[i]==a[L+1])
L++;
p[i]=L;
}
fin>>b+1;
m=strlen(b+1);
L=0;
for(i=1;i<=m;i++){
while(L!=0 && b[i]!=a[L+1])
L=p[L];
if(b[i]==a[L+1])
L++;
if(L==n){
nr++;
s[nr]=i-n;
}
}
fout<<nr<<"\n";
if(nr>1000)
nr=1000;
for(i=1;i<=nr;i++)
fout<<s[i]<<" ";
return 0;
}