Cod sursa(job #418028)

Utilizator feelshiftFeelshift feelshift Data 15 martie 2010 12:22:46
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>
#include <cstring>

int lungime,total,k,dict,count,tmp;
char string[10000000],subsir[21];

typedef char cuvinte[21];
cuvinte dictionar[50000];

FILE * in = fopen("abc2.in","rt");
FILE * out = fopen("abc2.out","wt");

int check(int k);

int main()
{
	int i;
	
	fscanf(in,"%s",string);
	
	lungime = strlen(string);
	
	while(!feof(in))
	{
		fscanf(in,"%s",subsir);
		
		for(i=1;i<=total;i++)
			if(!strcmp(subsir,dictionar[i]))
				tmp = 1;
		
		if(!tmp)
			strcpy(dictionar[++total],subsir);
	}
	dict = strlen(dictionar[1]);
	
	/*printf("%s\n",string);
	
	for(i=1;i<=total;i++)
		printf("%s\n",dictionar[i]);*/
	
	lungime-=dict;
	
	for(i=0;i<=lungime;i++)
		count+=check(i);
	
	fprintf(out,"%d",count);
	
	return (0);
}

int check(int k)
{
	int e,i,t,answer = 0,pozitie = -1;
	
	t = k + dict;
	
	//for(e=k;e<i;e++)
		//subsir[e-k] = string[e];
	//printf("%s\n",subsir);
	
	for(e=1;e<=total;e++)
		for(i=k;i<t;i++)
		{
			if(string[i] != dictionar[e][++pozitie])
			{
				pozitie = -1;
				break;
			}
			
			if(i == t - 1)
				answer++;
		}
	
	//memset(subsir,0,dict);
	
	return answer;
}