Cod sursa(job #2295864)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 3 decembrie 2018 23:43:41
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 666013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <long long> H[MOD];
int nr;
int cauta(int val)
{
    unsigned int n,i;
    n=val%MOD;
    for(i=0;i<H[n].size();i++)
    {
        if(H[n][i]==val)
        {
            return 1;
        }
    }
    return 0;
}
int main()
{
    string s,cuv;
    int i,n,d;
    long long val,p;
    f>>s;
    while(f>>cuv)
    {
        val=0;
        p=1;
        n=cuv.size();
        for(i=0;i<n;i++)
        {
            val=val+p*(cuv[i]-'a');
            p=p*3;
        }
        H[val%MOD].push_back(val);
    }
    val=0;
    p=1;
    for(i=0;i<n;i++)
    {
        val=val+p*(s[i]-'a');
        p=p*3;
    }
    p=p/3;
    if(cauta(val)==1)
    {
        nr++;
    }
    d=s.size();
    while(i<d)
    {
        val=val-(s[i-n]-'a');
        val=val/3+(s[i]-'a')*p;
        if(cauta(val)==1)
        {
            nr++;
        }
        i++;
    }
    g<<nr;
    return 0;
}