Cod sursa(job #2831903)

Utilizator GligarEsterabadeyan Hadi Gligar Data 12 ianuarie 2022 13:54:07
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <string>
#include <unordered_map>

using namespace std;

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

const int sigma=3;

typedef unsigned int uint;

unordered_map <uint, bool> um;

int main(){
    string s1,s2;
    fin>>s1;
    fin>>s2;
    uint nr=0;
    int n=s2.size();
    for(int i=0;i<n;i++){
        nr=nr*sigma+s2[i]-'a';
    }
    um[nr]=1;
    while(fin>>s2){
        nr=0;
        for(int i=0;i<n;i++){
            nr=nr*sigma+s2[i]-'a';
        }
        um[nr]=1;
    }
    nr=0;
    uint p=1;
    for(int i=1;i<n;i++){
        p*=sigma;
    }
    int sol=0;
    for(int i=0;i<int(s1.size());i++){
        if(i>=n){
            nr=nr-(s1[i-n]-'a')*p;
        }
        nr=nr*sigma+s1[i]-'a';
        if(um[nr]>0){
            sol++;
        }
    }
    fout<<sol<<"\n";
    return 0;
}