Cod sursa(job #1846037)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 12 ianuarie 2017 03:33:39
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb

#include <fstream>
#include <set>
#include <cmath>
using namespace std;

ifstream ka("abc2.in");
ofstream ki("abc2.out");
const int MOD = 999007;
string text, s;
int rezultat, sol, step;
set <int> lista[MOD];

int main()
{
    getline(ka, text);
    int marime;
    while(getline(ka, s))
    {
        marime = s.size();
        int nr = 0;
        for(int i = 0; i < marime; i++)
            nr = nr * 3 + s[i] - 'a';
        lista[nr % MOD].insert(nr);
    }
    int cautat = 0;
    int putere = 0;
    for(int i = 0; i < marime; i++)
    {
        cautat = 3 * cautat + text[i] - 'a';
        putere++;
    }
    putere--;
    int produs = pow(3, putere);
    int de_cautat = cautat % MOD;
    if(lista[de_cautat].find(cautat) != lista[de_cautat].end())
        sol++;
    for(int i = marime; i < text.size(); i++)
    {
        cautat -= (text[i - marime] - 'a') * produs;
        cautat = cautat * 3 + text[i] - 'a';
        de_cautat = cautat % MOD;
        if(lista[de_cautat].find(cautat) != lista[de_cautat].end())
            sol++;
    }
    ki << sol;
}