Cod sursa(job #1061056)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 19 decembrie 2013 09:37:32
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[10000005],a[25];
unsigned v[50005];
int main()
{
    freopen("abc2.in","r",stdin);
    freopen("abc2.out","w",stdout);
    unsigned n,m,i,j,nr=0,st,dr,y=0,mi;
    char c;
    unsigned x=0,z=1;
    c='a';
    gets(s);
    n=strlen(s);
    if(gets(a))
    {
       m=strlen(a);
       nr=1;
       for(j=0;j<m;j++)
       {
        v[nr]=v[nr]*3+a[j]-c;
        z=z*3;
       }
       z=z/3;
        while(gets(a))
    {
       nr++;
       for(j=0;j<m;j++)
        v[nr]=v[nr]*3+a[j]-c;
    }
    sort(v+1,v+nr+1);
    for(i=0;i<m-1;i++)
        x=x*3+s[i]-c;
        for(i=m-1;i<n;i++)
        {
            x=x%z;
            x=x*3+s[i]-c;
        st=1;
        dr=nr;
        while(st<=dr)
        {
            mi=(st+dr)/2;
            if(v[mi]==x)
                break;
            if(v[mi]<x)
                st=mi+1;
            else
                dr=mi-1;
        }
        if(st<=dr)
        y++;
        }
        printf("%u\n",y);
    }
        else
        printf("0\n");
    return 0;
}