Cod sursa(job #2296811)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 5 decembrie 2018 00:54:47
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<string>
#include<vector>
#include<set>
#define MOD 10041
using namespace std;
ifstream cin("abc2.in");
ofstream cout("abc2.out");
string a,b;
set<unsigned> Hash[MOD+1];
int n,m;
unsigned ans,code,p;
int main(){
    cin>>a; n=a.size();
    cin>>b; m=b.size();
    do{
        code=0;
        for(int i=0;i<m;i++)
            code=code*3+(b[i]-'a');
        Hash[code%MOD].insert(code);
    }while(cin>>b);
    p=1;
    for(int i=1;i<m;i++)
        p*=3;
    code=0;
    for(int i=0;i<m;i++)
        code=code*3+(a[i]-'a');
    ans+=Hash[code%MOD].count(code);

    for(int i=m;i<n;i++){
        code=(code-(a[i-m]-'a')*p)*3+(a[i]-'a');
        ans+=Hash[code%MOD].count(code);
    }

    cout<<ans;
}