Cod sursa(job #2397863)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 4 aprilie 2019 20:22:49
Problema Abc2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <cstring>
#define mod  10007
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <unsigned int> v[mod+1];
vector <unsigned int>::iterator it;
char S[10000005],S1[25];
unsigned int nr,p[21],ap,m,r;
int i;
int caut(unsigned int x){
    int r=x%mod;
    for(it=v[r].begin();it!=v[r].end();it++)
        if(*it==x)
            return 1;
    return -1;
}
int main()
{   f>>(S+1);
    p[0]=1;
    for(i=1;i<=19;i++)
        p[i]=p[i-1]*3;
    while(f>>(S1+1)){
        nr=0;
        for(i=1;S1[i]!=0;i++)
            nr=nr+(S1[i]-'a')*p[i-1];
        r=nr%mod;
        if(caut(nr)==-1)
            v[r].push_back(nr);
    }
    m=strlen(S1+1);
    nr=0;
    for(i=1;i<=m;i++)
        nr=nr+(S[i]-'a')*p[i-1];
    ap=0;
    if(caut(nr)!=-1)
        ap=1;
    for(i=m+1;S[i]!=0;i++){
        nr=nr/3+(S[i]-'a')*p[m-1];
        if(caut(nr)!=-1)
            ap++;
    }
    g<<ap;
    return 0;
}