Cod sursa(job #595209)

Utilizator cont_de_testeCont Teste cont_de_teste Data 11 iunie 2011 16:01:46
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <cstring>
#include <vector>
#include <ext/hash_map>
using namespace std;
using namespace __gnu_cxx ;
#define LMAX 10000005
#define MOD 666013

int L; char text[LMAX];
int l, NR;
hash_map <unsigned, int> H;
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');
		H[nr]=++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+=H.count (nr);
	}
}


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