Cod sursa(job #180044)

Utilizator razvi9Jurca Razvan razvi9 Data 16 aprilie 2008 16:34:01
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#include<cstring>
#include<map>
std::map<int,bool>hash;
unsigned int x,y,i,n,nr,l;
char s2[100],s[10000001];
std::map<unsigned int,bool>::iterator end;
int main()
{
	freopen("abc2.in","r",stdin);
	freopen("abc2.out","w",stdout);
	gets(s);
	gets(s2);
	l=strlen(s2);
	goto calc;
	while(!feof(stdin))
	{
		gets(s2);
calc:
		x=0;
		for(i=0;i<l;i++)
			x=x*3+s2[i]-'a';
		hash[x]=1;
	}
	end=hash.end();
	n=strlen(s);
	y=1;x=0;
	for(i=0;i<l;i++)
	{
		s[i]-='a';
		x=x*3+s[i];
		y*=3;
	}
	if(hash.find(x)!=end) nr++;
	for(;i<n;i++)
	{
		s[i]-='a';
		x=x*3+s[i]-y*s[i-l];
		if(hash.find(x)!=end) nr++;
	}
	printf("%d\n",nr);
	fclose(stdout);
	return 0;
}