Cod sursa(job #2296010)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 decembrie 2018 08:11:32
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
const int mod=11257;
vector <int> v[10000001];
int verificare_candidati(int nr)
{
    int i;
    for(i=0;i<v[nr%mod].size();i++)
    {
        if(v[nr%mod][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;
    fin>>sir_initial;
    while(!fin.eof())
    {
        fin>>cuvant;
        nr=0;
        for(i=0;i<cuvant.size();i++)
        {
             nr*=3;
             nr+=(cuvant[i]-'a');
        }
        v[nr%mod].push_back(nr);
    }
    nr=0;
    for(i=0;i<cuvant.size();i++)
    {
        nr+=p*(sir_initial[i]-'a');
        p*=3;
    }
    p=p/3;
    if(verificare_candidati(nr)==1)
    {
          nr_candidati++;
    }
    for(i=cuvant.size();i<sir_initial.size();i++)
    {
        nr-=(sir_initial[i-cuvant.size()]-'a');
        nr=nr/3+p*(sir_initial[i]-'a');
        if(verificare_candidati(nr)==1)
        {
            nr_candidati++;
        }
    }
    fout<<nr;
    fin.close();
    fout.close();
    return 0;
}