Cod sursa(job #3266595)

Utilizator Barbu_MateiBarbu Matei Barbu_Matei Data 9 ianuarie 2025 16:22:34
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;

const int p = 2;
string text, word;
bool m[2500001];

int hashF(string& word) {
    int res = 0;
    for (int i = 0; i < word.size(); ++i) {
        res = res * p + (int)word[i] * p;
    }
    return res;
}

int calcPow(int base, int power) {
    int res = 1;
    for (int i = 1; i <= power; ++i) {
        res *= base;
    }
    return res;
}

int main() {
    ifstream cin("abc2.in");
    ofstream cout("abc2.out");
    cin >> text;
    while (cin >> word) {
        m[hashF(word)] = true;
    }
    int res = 0, pos = 0, ans = 0;
    for (int i = 0; i < text.size(); ++i) {
        ++pos;
        res = res * p + (int)text[i] * p;
        if (pos == word.size()) {
            ans += m[res];
            res = res - (int)text[i - (pos - 1)] * calcPow(p, pos);
            --pos;
        }
    }
    cout << ans;
}