Cod sursa(job #1013095)

Utilizator deneoAdrian Craciun deneo Data 20 octombrie 2013 11:48:40
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <string>
#include <set>

using namespace std;

ifstream fin("abc2.in");
ofstream fout("abc2.out");

string sir, a;
set<unsigned int> s;

int main() {
    fin >> sir;
    int n;

    while (fin >> a) {
        unsigned int code = 0;
        n = a.size();

        for (int i = 0; i < a.size(); ++i)
            code = code * 3 + a[i] - 'a';

        s.insert(code);
    }

    unsigned int power = 1;
    for (int i = 1; i < n; ++i)
        power *= 3;

    unsigned int code = 0, rez = 0;
    for (int i = 0; i < n; ++i)
        code = code * 3 + sir[i] - 'a';

    if (s.find(code) != s.end())
        ++rez;

    for (int i = n; i < sir.size(); ++i) {
        code -= power * (sir[i - n] - 'a');
        code = code * 3 + sir[i] - 'a';
        if (s.find(code) != s.end())
            ++rez;
    }

    fout << rez;
    return 0;
}