Pagini recente » Cod sursa (job #2518425) | Cod sursa (job #3264679) | Cod sursa (job #2595923) | Cod sursa (job #1945429) | Cod sursa (job #2192388)
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
const int baza=3;
const int prim=50003;
vector<int> hashTable[prim];
string text,cuvant;
int n,i,j;
int main()
{
ifstream f("abc2.in");
ofstream g("abc2.out");
f>>text;
int l=text.length();
while(f>>cuvant)
{
int cod=0;
n=cuvant.length();
for(i=0;i<n;++i)
cod=(cod*baza+cuvant[i]-'a')%prim;
hashTable[cod%prim].push_back(cod);
}
int cod=0,potriviri=0,h=1;
for(i=1;i<n;++i) h=h*baza;
for(i=0;i<n;++i)
cod=cod*baza+text[i]-'a';
for(;i<l;++i)
{
bool ok=0;
for(unsigned int j=0;j<hashTable[cod%prim].size();++j)
{
if(hashTable[cod%prim][j]==cod) ok=1;
if(ok) {potriviri++;break;}
}
cod=cod-(text[i-n]-'a')*h;
cod=cod*baza+text[i]-'a';
}
bool ok=0;
for(unsigned int j=0;j<hashTable[cod%prim].size();++j)
{
if(hashTable[cod%prim][j]==cod) ok=1;
if(ok) {potriviri++;break;}
}
g<<potriviri<<endl;
return 0;
}