Cod sursa(job #3225909)

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

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

#define MOD1 1000000009
#define MOD2 1000000021
#define NMAX 10000001

string A, B;
unordered_map<int, 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;
    }
    
    nr = 0;
    for (int i = 0; i<lb; i++) {
        nr = nr*3 + A[i] - 'a';
        pow3 = pow3 * 3;
    }
    pow3 /= 3;
    
    if (prez[nr] == 1) ans++;
    
    for (int i = 1; i<la-lb; i++) {
        nr = nr % pow3;
        nr = nr * 3 + A[i+lb-1] - 'a';
        if (prez[nr] == 1) ans++;
    }
    
    fout << ans;
    
    return 0;
}