Pagini recente » Cod sursa (job #2186185) | Cod sursa (job #1565394) | Cod sursa (job #2947178) | Cod sursa (job #434950) | Cod sursa (job #3265958)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
int n, i, cuvCur, lTxt, lCuv, put, rasp;
unordered_map<int, bool> dict;
string txt, cuv;
int main() {
fin >> txt;
while(fin >> cuv) {
n++;
cuvCur = 0;
for(auto it : cuv) cuvCur = cuvCur * 3 + (it - 'a');
dict[cuvCur] = true;
}
lTxt = txt.size();
lCuv = cuv.size();
put = 1;
cuvCur = 0;
for(i = 0; i < lCuv; i++) {
put *= 3;
cuvCur = cuvCur * 3 + (txt[i] - 'a');
}
put /= 3;
if(dict.find(cuvCur) != dict.end()) rasp++;
for(i = lCuv; i < lTxt; i++) {
cuvCur = cuvCur - put * (txt[i - lCuv] - 'a');
cuvCur = cuvCur * 3 + (txt[i] - 'a');
if(dict.find(cuvCur) != dict.end()) rasp++;
}
fout << rasp;
return 0;
}