Cod sursa(job #413016)

Utilizator titusuTitus C titusu Data 7 martie 2010 14:10:24
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
using namespace std;
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>

vector<unsigned> S;
char s[1<<24], c[25];

unsigned Val(char * s, int nC){
	int NR=0;
	for(int i=0;i<nC;++i)
		NR=3*NR+s[i]-'a';
	return NR;	
}

int main(){
	
	freopen("abc2.in","r",stdin);
	//int nS=0;
	//while((ch=fin.get())>='a')  s[nS++]=ch;
	//s[nS]=0;
	fgets(s,10000005,stdin);
	fgets(c,25,stdin);
	//cout<<s<<endl<<endl;
	//cout.flush();
	int nC=strlen(c)-1;
	S.push_back(Val(c,nC));
	while(fgets(c,25,stdin))
		S.push_back(Val(c,nC));
	sort(S.begin(), S.end());
	int rez=0;
	int NR=0;
	unsigned P=1;
	for(int i=0;i<nC;++i)
		NR=3*NR+s[i]-'a',P*=3;
	P/=3;
	rez+=binary_search(S.begin(), S.end(), NR);
	for(int i=nC;s[i]>='a';++i){
		NR%=P;
		NR = 3*NR + s[i]-'a';
		rez+=binary_search(S.begin(), S.end(), NR);
	}
	freopen("abc2.out","w",stdout);
	printf("%d\n",rez);
	return 0;
}