Cod sursa(job #2291980)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 28 noiembrie 2018 20:49:39
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <string>
#include <unordered_map>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
string s1, s2;
int N, M, i ,j, sol;
long long cod, p;
unordered_map <long long, bool>  Map;
int main() {
    f >> s1;
    f >> s2;
    N = s1.length();
    M = s2.length();
    cod = 0;
    p = 1;
    for (i = 0; i < M; ++i) {
        cod = cod + (s2[i] - 'a') * p;
        p = p * 3;
    }
    Map[cod] = true;
    while (f >> s2) {
        cod = 0;
        p = 1;
        for (i = 0; i < M; ++i) {
            cod = cod + (s2[i] - 'a') * p;
            p = p * 3;
        }
        Map[cod] = true;
    }
    cod = 0;
    p = 1;
    for (i = 0; i < M; ++i) {
        cod = cod + (s1[i] - 'a') * p;
        p = p * 3;
    }
    if (Map.find(cod) != Map.end()) ++sol;
    p /= 3;
    for (i = M; i < N; ++i) {
        cod = (cod - s1[i - M] + 'a') / 3 + p * (s1[i] - 'a');
        if ( Map.find(cod) != Map.end()) ++sol;
    }
    g << sol;
    return 0;
}