Cod sursa(job #2832387)

Utilizator GligarEsterabadeyan Hadi Gligar Data 13 ianuarie 2022 16:13:00
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <string>
#include <unordered_set>

using namespace std;

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

const int sigma=3;

typedef unsigned int uint;

unordered_set <uint> us;

int main(){
    string s1,s2;
    fin>>s1>>s2;
    uint nr=0;
    int n=s2.size();
    for(int i=0;i<n;i++){
        nr=nr*sigma+s2[i]-'a';
    }
    us.insert(nr);
    while(fin>>s2){
        nr=0;
        for(int i=0;i<n;i++){
            nr=nr*sigma+s2[i]-'a';
        }
        us.insert(nr);
    }
    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(i>=n-1&&us.find(nr)!=us.end()){
            sol++;
        }
    }
    fout<<sol<<"\n";
    return 0;
}