Pagini recente » Cod sursa (job #791009) | Cod sursa (job #1190891) | Cod sursa (job #1073707) | Cod sursa (job #690448) | Cod sursa (job #3159745)
#include <fstream>
#include <cstring>
#include <unordered_map>
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
typedef long long ll;
const int N = 1e7 + 5;
int n, lg, ans;
ll hsh, p;
char c[N], cuv[25];
unordered_map<ll, bool> ap;
int main()
{
in >> c;
while(in >> cuv) {
lg = strlen(cuv);
hsh = 0;
for(int i=0; i<lg; i++) {
hsh *= 4;
hsh += cuv[i] - 'a' + 1;
}
ap[hsh] = 1;
}
n = strlen(c);
hsh = 0;
p = 1;
for(int i=0; i<lg; i++) {
hsh *= 4;
if(i < lg - 1)
p *= 4;
hsh += c[i] - 'a' + 1;
}
if(ap.count(hsh))
ans++;
for(int i=lg; i<n; i++) {
hsh -= (c[i-lg] - 'a' + 1) * p;
hsh *= 4;
hsh += c[i] - 'a' + 1;
if(ap.count(hsh))
ans++;
}
out << ans;
return 0;
}