Cod sursa(job #99692)

Utilizator stef2nStefan Istrate stef2n Data 11 noiembrie 2007 15:03:25
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.73 kb
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;

#define LMAX 10000005

int L; char text[LMAX];
int l;
set <unsigned int> S;
int cnt=0;

void read_data()
{
	char secv[25];
	fgets(text,LMAX,stdin);
	L=strlen(text)-1;
	fgets(secv,25,stdin);
	l=strlen(secv)-1;
	do
	{
		unsigned int nr=0;
		for(int i=0; i<l; ++i)
			nr=nr*3+(secv[i]-'a');
		S.insert(nr);
	}
	while(fgets(secv,25,stdin));
}

void solve()
{
	unsigned int nr=0, p3=1;
	for(int i=0; i<l-1; ++i)
	{
		nr=nr*3+(text[i]-'a');
		p3*=3;
	}
	for(int i=l-1; i<L; ++i)
	{
		nr=(nr%p3)*3+(text[i]-'a');
		cnt+=(S.find(nr)!=S.end());
	}
}


int main()
{
	freopen("abc2.in","r",stdin);
	freopen("abc2.out","w",stdout);
	read_data();
	solve();
	printf("%d\n",cnt);
	return 0;
}