Cod sursa(job #2107479)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 17 ianuarie 2018 11:57:51
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
char s[10000005],a[25];
vector<unsigned> v[66016];
int main()
{
    freopen("abc2.in","r",stdin);
    freopen("abc2.out","w",stdout);
    unsigned n,m,i,j,nr,w,y=0,p;
    char c;
    unsigned x=0,z=1;
    p=66013;
    c='a';
    gets(s);
    n=strlen(s);
    m=strlen(a);
    nr=0;
    for(j=0; j<m; j++)
        nr=nr*3+a[j]-c;
    i=nr%p;
    w=v[i].size();
    for(j=0; j<w; j++)
        if(v[i][j]==nr)
            break;
    if(j==w)
        v[i].push_back(nr);
    while(gets(a))
    {
        nr=0;
        for(j=0; j<m; j++)
            nr=nr*3+a[j]-c;
        i=nr%p;
        w=v[i].size();
        for(j=0; j<w; j++)
            if(v[i][j]==nr)
                break;
        if(j==w)
            v[i].push_back(nr);
    }
    for(i=0; i<m-1; i++)
    {
        x=x*3+s[i]-c;
        z=z*3;
    }
    for(i=m-1; i<n; i++)
    {
        x=x%z;
        x=x*3+s[i]-c;
        nr=x%p;
        w=v[nr].size();
        for(j=0; j<w; j++)
            if(v[nr][j]==x)
                break;
        if(j<w)
            y++;
    }
    printf("%u\n",y);

    return 0;
}