Cod sursa(job #1061073)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 19 decembrie 2013 10:15:11
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
char s[10000005],a[25];
vector<unsigned> v[99995];
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=99991;
    c='a';
    gets(s);
    n=strlen(s);
    if(gets(a))
    {
       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);
    }
        else
        printf("0\n");
    return 0;
}