Pagini recente » Cod sursa (job #2793402) | Cod sursa (job #2437181) | Cod sursa (job #665398) | Cod sursa (job #2436602) | Cod sursa (job #2871633)
#include <vector>
#include <fstream>
#define mod 10007
#define prim 3
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
typedef unsigned int ui;
ui hash1,hashm,p=1,poz;
ui sa,sb,i;
string s,d;
vector<ui> v[mod];
bool searchh(ui h)
{
ui p=v[h%mod].size();for(ui i=0;i<p;i++){if(v[h%mod][i]==h) return true;}
return false;
}
int main()
{
f>>s;
sa=s.size();
while(f>>d)
{
sb=d.size();
hash1=0;
for(i=0; i<sb; i++){hash1=hash1*prim+d[i]-'a';}
if(!searchh(hash1)){v[hash1%mod].push_back(hash1);}
}
for(i=0;i<sb;i++)
{
hashm=(hashm*prim)+s[i]-'a';
if(i>0){p=p*prim;}
}
if(searchh(hashm)) poz++;
for(i=sb;i<sa;i++)
{
hashm=((prim*(hashm-(((s[i-sb]-'a')*p))))+s[i]-'a'); if(searchh(hashm)) poz++;
}
g<<poz;
f.close();
g.close();
return 0;
}