Cod sursa(job #3209395)

Utilizator tomaionutIDorando tomaionut Data 2 martie 2024 12:27:51
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;

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

string s, s2;
int pow3[25], n, sol;
unordered_map <int, int> M;

int32_t main()
{
    int i, cod;
    pow3[0] = 1;
    for (i = 1; i <= 20; i++)
        pow3[i] = pow3[i - 1] * 4;
    fin >> s;
    s = "&" + s;
    while (fin >> s2)
    {
        cod = 0;
        n = s2.size();
        s2 = "%" + s2;
        for (i = 1; i <= n; i++)
            cod = cod * 4 + s2[i] - 'a' + 1;
        M[cod] = 1;
    }
    cod = 0;
    for (i = 1; i <= n; i++)
        cod = (cod * 4 + s[i] - 'a' + 1);
    sol += M[cod];
    for (i = n + 1; s[i]; i++)
    {
        cod = (cod - (s[i - n] - 'a' + 1) * pow3[n - 1]) * 4 + s[i] - 'a' + 1;
        sol += M[cod];
    }
    fout << sol << "\n";

    return 0;
}