Cod sursa(job #831421)

Utilizator taigi100Cazacu Robert taigi100 Data 8 decembrie 2012 17:04:12
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb

#include <stdio.h>
#include <string.h>

int dic[300],v[1005];
char a[2000000],b[2000000];
void comp_dic()
{
	int n=strlen(a);
	for(int i=0;i<n;i++)
		dic[a[i]]=n-i;
}


int main()
{
	FILE *f=fopen("strmatch.in","r");
	fscanf(f,"%s",&a);
	fscanf(f,"%s",&b);
	comp_dic();
	char *p;
	int cont=0;
	p=b;
	while(p)
	{
		p=strstr(p,a);
		if(p)
		{
		if(cont<1000)
		{
			cont++;
			v[cont]=p-b;
			p+=dic[p[0]];
		}
		else
		{
			cont++;
			p+=dic[p[0]];
		}
		}
	}
	FILE *g=fopen("strmatch.out","w");
	fprintf(g,"%d\n",cont);
	for(int i=1;i<=cont;i++)
		fprintf(g,"%d ",v[i]);
}