Cod sursa(job #1689900)

Utilizator Vasile_RotaruVasea Rotaru Vasile_Rotaru Data 14 aprilie 2016 17:05:13
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("abc2.in");
ofstream fout("abc2.out");

#define Mod 9901 

vector<string>Hash[Mod];
string s,s1;
int k,l;

int H(string s)
{
	int l=s.length(),k=0,i;
	for(i=0;i<l;++i)k+=s[i]*i;
	return k%Mod;
}

bool find(string s)
{
	int key=H(s);
	vector<string>::iterator B=Hash[key%Mod].begin(),E=Hash[key%Mod].end();
	for(;B!=E;++B)
	if(*B==s)return 1;
	return 0;
}

void insert(string s)
{
	int key=H(s1);
	vector<string>::iterator B=Hash[key%Mod].begin(),E=Hash[key%Mod].end();
	if(find(s))return;
	Hash[key%Mod].push_back(s1);
}

int main()
{
	ios_base::sync_with_stdio(0);
	fin.tie(0);
 	fin>>s;
 	while(fin>>s1)insert(s1);
 	l=s1.length();
 	s1="";
	for(int i=0;i<l;++i)s1+=s[i];
	if(find(s1))++k;
	int l1=s.length();
	for(int i=l;i<l1;++i)
	{
		s1.erase(0,1);
		s1=s1+s[i];
		k+=find(s1);
		//if(find(s1))++k;
	}
	fout<<k;
	return 0;
}