Cod sursa(job #2296015)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 decembrie 2018 08:53:24
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
#define mod 30011
vector <int> v[30011];
int verificare_candidati(int nr)
{
    int i,aux;
    aux=nr%mod;
    for(i=0;i<v[aux].size();i++)
    {
        if(v[aux][i]==nr)
        {
            return 1;
        }
    }
    return 0;
}
int main()
{
    ifstream fin("abc2.in");
    ofstream fout("abc2.out");
    string sir_initial,cuvant;
    int nr,p=1,nr_candidati=0,i;
    unsigned lgcuv,lgsir;
    fin>>sir_initial;
    lgsir=sir_initial.size();
    while(!fin.eof())
    {
        fin>>cuvant;
        lgcuv=cuvant.size();
        nr=0;
        for(i=0;i<lgcuv;i++)
        {
             nr*=3;
             nr+=(cuvant[i]-'a');
        }
        v[nr%mod].push_back(nr);
    }
    nr=0;
    for(i=0;i<lgcuv;i++)
    {
        p*=3;
        nr*=3;
        nr+=(sir_initial[i]-'a');
    }
    p/=3;
    if(verificare_candidati(nr)==1)
    {
          nr_candidati++;
    }
    for(i=lgcuv;i<lgsir;i++)
    {
        nr-=p*(sir_initial[i-lgcuv]-'a');
        nr*=3;
        nr+=(sir_initial[i]-'a');
        if(verificare_candidati(nr)==1)
        {
            nr_candidati++;
        }
    }
    fout<<nr;
    fin.close();
    fout.close();
    return 0;
}