Cod sursa(job #103766)

Utilizator ProtomanAndrei Purice Protoman Data 15 noiembrie 2007 16:44:36
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.9 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SM 10000000
char c[10000005];
char s[50010][21];
char str[21];
long i,j,n,m,nm,dimh,h,nr,li,ls;

int fn_sortare(const void * a,const void *b) 
{
	char * aa=(char *)a;
	char * bb=(char *)b;
	return (strcmp(aa,bb));
}

int main()
{
	freopen("abc2.in","r",stdin);
	freopen("abc2.out","w",stdout);
	fgets(c,SM+1,stdin);
	nm=strlen(c)-1;
	while (!feof(stdin)) 
	{
		i++;
		scanf("%s\n",&s[i]);
	}
	n=i;
	h=strlen(s[1]);
	qsort(s+1,n,sizeof(s[1]),fn_sortare);
	str[0]='0';
	for (i=0;i<h-1;i++)
		str[i+1]=c[i];
	for (i=h-1;i<=nm;i++)
	{
		strcpy(str,str+1);
		str[h-1]=c[i];
		while (li<ls)
		{
			m=(li+ls)/2;
			if (strcmp (str,s[m]) == 0)
			{
				nr++;
				break;
			}
			if (strcmp (str,s[m]) < 0)
				ls=m-1;
			else li=m+1;
		}
	}
	printf("%ld",nr);
	fclose(stdin);
	fclose(stdout);
	return 0;
}