Cod sursa(job #2398392)

Utilizator mihaimodiMihai Modi mihaimodi Data 5 aprilie 2019 13:40:07
Problema Abc2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <cstring>
#include <vector>
#define mod 10007
using namespace std;
ifstream fin ("abc2.in");
ofstream fout("abc2.out");
vector <unsigned int> v[10008];
char s1[10000005],s2[22];
unsigned int p[22],sol;
int caut(unsigned int x,int k)
{
    for(int i=0;i<v[k].size();i++)
        if(v[k][i]==x)
            return 1;
    return 0;
}
int main()
{
    fin>>(s1+1);
    p[0]=1;
    for(int i=1;i<=19;i++)
        p[i]=p[i-1]*3;
    while(fin>>(s2+1))
    {
    unsigned    int x=0;
        for(int i=1;s2[i]!=0;i++)
            x=x+(s2[i]-'a')*p[i-1];
    int   k=x%mod;

            v[k].push_back(x);
    }
    int n=strlen(s1+1);
    int m=strlen(s2+1);
 unsigned   int nr=0;
    sol=0;
    for(int i=1;i<=m;i++)
        nr=nr+(s1[i]-'a')*p[i-1];
    if(caut(nr,nr%mod))
        sol=1;

    for(int i=m+1;i<=n;i++)
    {
        nr=nr/3+(s1[i]-'a')*p[m-1];
        if(caut(nr,nr%mod)==1)
            sol++;
    }
    fout<<sol;
    return 0;
}