Cod sursa(job #3225921)

Utilizator ililogIlinca ililog Data 19 aprilie 2024 12:53:37
Problema Abc2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<cstring>
#include<unordered_map>

ifstream fin("abc2.in");
ofstream fout("abc2.out");

string A, B;
unordered_map<long long, bool> prez;
int la, lb;
long long nr;
long long pow3 = 1;
long long ans;

int main() {
    
    fin >> A;
    la = A.size();
    
    while (fin >> B) {
        nr = 0;
        lb = B.size();
        
        for (int i = 0; i<lb; i++) {
            nr = nr*3 + B[i] - 'a';
        }
        prez[nr] = 1;
    }
    
    for (int i = 1; i<lb; i++) pow3 *= 3;

    nr = 0;
    for (int i = 0; i<lb; i++) {
        nr = nr*3 + A[i] - 'a';
    }
    if (prez.find(nr) != prez.end()) ans++;
    
    for (int i = 1; i<=la-lb; i++) {
        nr = nr - pow3 * (A[i-1]-'a');
        nr = nr * 3 + A[i+lb-1] - 'a';
        if (prez.find(nr) != prez.end()) ans++;
    }
    
    fout << ans;
    
    return 0;
}