Cod sursa(job #118189)

Utilizator coderninuHasna Robert coderninu Data 23 decembrie 2007 15:07:16
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#include <string.h>
#define Nmax 10000001

short uz[Nmax], pi[21];
char T[Nmax], P[21];
long n, m, i, j, rez;

int main()
{
	freopen("abc2.in", "r", stdin);
	scanf("%s\n", &T); n=strlen(T);
	while (!feof(stdin))
	{
		scanf("%s\n", &P);
		for (i=0; i<m; pi[i]=0, i++);
		for ( i=0, j=-1, pi[0]=-1, m=strlen(P); i<m; i++, pi[i]=++j ) while (j>=0 && P[i]!=P[j]) j=pi[j];
		for (i=0, j=0; i<n; i++)
		{
			while (j && P[j]!=T[i]) j=pi[j];
			if (P[j]==T[i]) j++;
			if (j==m) { rez+=1-uz[i-m]; uz[i-m]=1; }

		}
	}
	fclose(stdin);
	freopen("abc2.out", "w", stdout);
	printf("%ld", rez);
	fclose(stdout);
	return 0;
}