Cod sursa(job #3265958)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 4 ianuarie 2025 14:40:17
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#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;
}