Cod sursa(job #2871607)

Utilizator darisavuSavu Daria darisavu Data 15 martie 2022 10:20:36
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define mod 10007
#define prim 3
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
unsigned int hash1,hashm,p=1,poz;
int sa,sb,i;
string s,d;
vector<unsigned int> v[mod];
bool searchh(unsigned int h)
{
    unsigned p=v[h%mod].size();
        for(int i=0;i<p;i++)
        {
            if(v[h%mod][i]==h) return true;
        }
        return false;
}
int main()
{
    f>>s;
    sa=s.size();
    while(f>>d)
    {
        sb=d.size();
        hash1=0;
        for(i=0; i<sb; i++)
        {
            hash1=hash1*prim+d[i]-'a';
        }
        if(!searchh(hash1))
        {
            v[hash1%mod].push_back(hash1);
        }
    }
    for(i=0;i<sb;i++)
    {
        hashm=(hashm*prim)+s[i]-'a';
        if(i>0)
        {
        p=p*prim;
        }

    }
    if(searchh(hashm)) poz++;
    for(i=sb;i<sa;i++)
    {
        hashm=((prim*(hashm-(((s[i-sb]-'a')*p))))+s[i]-'a');
        if(searchh(hashm)) poz++;
    }
    g<<poz;
    return 0;
}