Cod sursa(job #2555292)

Utilizator tomaionutIDorando tomaionut Data 23 februarie 2020 21:02:34
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define P 7001
using namespace std;

ifstream fin("abc2.in");
ofstream fout("abc2.out");
char s[10000005];
vector <long long> h[P+5];
char cuv[30];
long long pow3[22],cod;
bool Caut(long long x)
{
    long long i;
    int r,l;
    r=x%P;
    l=h[r].size();
    for (i=0; i<l; i++)
        if (h[r][i]==x) return 1;
    return 0;
}
int main()
{
    int i,n,len,sol=0;
    pow3[0]=1;
    for (i=1; i<20; i++)
        pow3[i]=pow3[i-1]*3;
    fin >> s;
    len=strlen(s);
    while (fin >> cuv)
    {
        n=strlen(cuv);
        cod=0;
        for (i=0; i<n; i++)
            cod+=(pow3[i]*(cuv[i]-'a'));
        if (Caut(cod)==0)
        h[cod%P].push_back(cod);
    }
    cod=0;
    for (i=0; i<n; i++)
        cod+=(pow3[i]*(s[i]-'a'));
    sol+=Caut(cod);
    for (i=n; i<len; i++)
    {
        cod/=3;
        cod+=(pow3[n-1]*(s[i]-'a'));
        sol+=Caut(cod);
    }
    fout << sol;


    return 0;
}