Pagini recente » Cod sursa (job #2514335) | Cod sursa (job #2405750) | Cod sursa (job #3194377) | Cod sursa (job #1827081) | Cod sursa (job #290505)
Cod sursa(job #290505)
#include<stdio.h>
#include<string.h>
FILE *f,*g;
char a[2000005],b[2000005],z;
int st[1001],st1[10001],c[1005],nr,k,k1,i,j,n,m;
int main()
{ f=fopen("strmatch.in","r"); g=fopen("strmatch.out","w");
fscanf(f,"%s",a);
n=strlen(a)-1;
k=0; k1=0; nr=0; i=-1; fscanf(f,"%c",&z);
while(!feof(f))
{ i++; fscanf(f,"%c",&z);
for(j=1;j<=k;j++)
if(i-st[j]>=n+1) { nr++; if(nr<=1000) c[nr]=st[j]; }
else if(a[i-st[j]]==z) { k1++; st1[k1]=st[j]; }
if(z==a[0]) { k1++; st1[k1]=i; }
for(j=1;j<=k1;j++) st[j]=st1[j]; k=k1; k1=0;
}
for(j=1;j<=k;j++) if(m+1-st[j]>=n+1) { nr++; if(nr<=1000) c[nr]=st[j]; }
fprintf(g,"%ld\n",nr); for(i=1;i<=nr;i++) if(i<=1000) fprintf(g,"%ld ",c[i]);
fclose(g);
return 0;
}