Cod sursa(job #1790230)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 27 octombrie 2016 21:55:04
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <cstring>
#include <vector>

const int mod=666013,baza=3,prim=103;

using namespace std;

char sir[10000001],sir1[50001];
vector<long long> v[mod+2];
long long put[21];

int find_hash(long long a)
{
    int b=a%mod;
    for(int i=0;i<v[b].size();i++)
        if(v[b][i]==a) return 1;
    return 0;
}

int main()
{
    freopen("abc2.in","r",stdin);
    freopen("abc2.out","w",stdout);
    int l1,l,sol=0;
    long long a=0;
    gets(sir);
    l1=strlen(sir);
    put[0]=1;
    for(int i=1;i<20;i++)
        put[i]=put[i-1]*baza;
    while(gets(sir1))
    {
        l=strlen(sir1);
        a=0;
        for(int i=0;i<l;i++)
            a=a+put[i]*(sir1[i]-'a');
        v[a%mod].push_back(a);
    }
    a=0;
    for(int i=0;i<l;i++)
        a=a+put[i]*(sir[i]-'a');
    sol+=find_hash(a);
    for(int i=l;i<l1;i++)
    {
        a=a/baza;
        a=a+put[l-1]*(sir[i]-'a');
        sol=sol+find_hash(a);
    }
    printf("%d",sol);
    return 0;
}