Cod sursa(job #2474715)

Utilizator DavidTurtureanCDavid Turturean DavidTurtureanC Data 15 octombrie 2019 19:06:46
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
vector<unsigned int> v[100020];
char s[10000005]; char c[22]={0};int i=0,auxmod=0,modi=100019,len=0,lens=0,gasit=0,j=0,dim=0,p3[22]; unsigned int nr=0,p=1; bool ok=0;
int main()
{
    //citire text
    fin.getline(s,10000002);
    fin.getline(c,22); len=strlen(c);
    p3[0]=1; for(i=1;i<=21;++i) p3[i]=p3[i-1]*3;
    for(i=nr=0;i<len;i++)nr+=p3[i]*(c[i] - 'a');
    v[nr%modi].push_back(nr);
    while(fin.getline(c,22)){
            for(i=nr=0;i<len;i++)nr+=p3[i]*(c[i] - 'a');
            auxmod=nr%modi;
            ok=0;
            for(unsigned int it : v[auxmod])
               if(it==nr){ok=1; break;}
            if(!ok)v[auxmod].push_back(nr);
    }
    lens=strlen(s);
    for(i=nr=0;i<len;i++)nr+=p3[i]*(s[i] - 'a');
    while(s[i]){ ok=0;
            auxmod=nr%modi;
            for(unsigned int it : v[auxmod])
               if(it==nr){ok=1; break;}
            if(ok)++gasit;
        nr/=3;
        nr+=p3[len-1]*(s[i] - 'a');
        ++i;
    }
    ok=0;
            auxmod=nr%modi;
            for(unsigned int it : v[auxmod])
               if(it==nr){ok=1; break;}
            if(ok)gasit++;
    fout<<gasit;

    return 0;
}