Cod sursa(job #541298)

Utilizator bhaskruMarius S bhaskru Data 24 februarie 2011 23:07:42
Problema Potrivirea sirurilor Scor 18
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#include <string.h>
char a[2000001],b[2000001];

int v[2000001];

inline void cauta(int la,int lb)
{
int i;
int aux;
int k,nr;
char *p;
nr=0;
p=strchr(b,a[0]);
	while (p)
{i=p-b;
k=-1;
aux=1;
	for(int j=1;j<la && k==-1;j++)
		{if(b[i+j]==a[0])
			aux=j;
		if(b[i+j]!=a[j])
			k=1;
		}
	if(k==-1)
		{nr++;
		v[nr]=i;}	
p=p+aux;
p=strchr(p,a[0]);

}
printf("%d\n", nr);
if(nr>1000)
  nr=1000;
for(int i=1;i<=nr;i++)
	printf("%d ",v[i]);
}

int main()
{
int la,lb;
freopen("strmatch.in", "r", stdin);
freopen("strmatch.out", "w", stdout);
scanf("%s %s", a, b);
la = strlen(a);
lb = strlen(b);
if(lb>=la)
 cauta(la,lb);
else
 printf("%d ", 0);
return 0;
}