Pagini recente » Cod sursa (job #991867) | Cod sursa (job #422538) | Cod sursa (job #2220025) | Cod sursa (job #923729) | Cod sursa (job #2219805)
#include <bits/stdc++.h>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
const int hN = 66013;
vector<int> H[hN];
uint64_t h(string s)
{
uint64_t b3=0;
for(uint32_t i=0;i<s.length();i++)
b3=b3*3+s[i]-'a';
return b3;
}
bool found(int _h)
{
int __h=_h%hN;
for(auto i:H[__h])
if(i==_h) return true;
return false;
}
int main()
{
string S;
f>>S;
int L;
string s;
while(f>>s)
{
int _h=h(s);
if(!found(_h)) H[_h%hN].push_back(_h);
}
L=s.size();
string seq;
seq.resize(L);
copy(S.begin(),S.begin()+L,seq.begin());
int result=found(h(seq));
for(uint32_t i=L;i<S.size();i++)
{
seq.erase(seq.begin());
seq+=S[i];
result+=found(h(seq));
}
g<<result;
return 0;
}