Pagini recente » Cod sursa (job #1994729) | Cod sursa (job #42021) | Cod sursa (job #2037325) | Cod sursa (job #1738419) | Cod sursa (job #1690174)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
#define Mod 6613
vector<string>Hash[Mod];
string s,s1;
//bool Hash[Mod];
int k,l;
int H(string s)
{
int l=s.length(),k=0,i,mult=1;
for(i=0;i<l;++i)k+=(s[i]*mult)%Mod,mult*=256;
return k%Mod;
}
bool find(string s)
{
int key=H(s);
vector<string>::iterator B=Hash[key].begin(),E=Hash[key].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].begin(),E=Hash[key].end();
if(find(s))return;
Hash[key].push_back(s1);
}
int main()
{
ios_base::sync_with_stdio(0);
fin.tie(0);
fin>>s;
/*while(fin>>s1)Hash[H(s1)]=1;
l=s1.length();
s1="";
for(int i=0;i<l;++i)s1+=s[i];
int l1=s.length();
for(int i=l;i<s.length();++i)
{
s1.erase(0,1);
s1=s1+s[i];
if(Hash[H(s1)])++k;
}*/
while(fin>>s1)insert(s1);
l=s1.length();
s1="";
for(int i=0;i<l;++i)s1+=s[i];
if(find(s1))++k;
for(int i=l;i<s.length();++i)
{
s1.erase(0,1);
s1=s1+s[i];
if(find(s1))++k;
}
fout<<k;
return 0;
}