Pagini recente » Cod sursa (job #2567155) | Cod sursa (job #749441) | Cod sursa (job #483918) | Cod sursa (job #1521751) | Cod sursa (job #519823)
Cod sursa(job #519823)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <set>
#define DN 50005
using namespace std;
typedef set<int>::iterator it;
int hash(string a) {
int r=0;
for(int i=0; i<=a.size(); ++i) r=r*3+a[i]-'a';
return r;
}
int main()
{
string sir, cuv,caut;
set<int> s;
ifstream f("abc2.in");
ofstream g("abc2.out");
int sol=0;
getline(f,sir);
int si=hash(sir);//sirul
int sz,n=sir.size();
for(;0==f.eof();) if(f.good()) {
getline(f,cuv);
if(0==cuv.empty()) {
sz=cuv.size();
s.insert(hash(cuv));
}
}
int pow=1;
it c;
for (int i=1; i<sz; ++i) pow*=3;
for(int i=sz; i<n; ++i) {
si-=pow*(sir[i-sz]-'a');
si=si*3+sir[i]-'a';
c=s.find(si);
if(c!=s.end()) ++sol;
}
g<<sol;
return 0;
}