Cod sursa(job #3217009)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 20 martie 2024 18:34:12
Problema Abc2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
#include <unordered_set>
#include <algorithm>
#include <string>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");

const int nmax = 10000000;

char s[nmax + 5];

unordered_set<long long> x;

char pat[30];

int sol;

int cl;

long long p3;

int main()
{
    fin>>s;
    while(fin>>pat)
    {
        long long q = 0;
        cl=0;
        for(int i=0;pat[i];i++)
            q=q*3 + pat[i]-'a',cl++;
        x.insert(q);
    }
    p3=1;
    for(int i=1;i<cl;i++)
        p3*=3;
    long long q = 0;
    for(int i=0;s[i];i++)
    {
        if(i >= cl)
            q-=(s[i-cl]-'a')*p3;
        q=q*3 + s[i]-'a';
        if(i>=cl-1 && x.find(q)!=x.end())
            sol++;
    }
    fout<<sol;
}