Cod sursa(job #1532104)

Utilizator ASTELOTudor Enescu ASTELO Data 21 noiembrie 2015 14:59:04
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>
#include<cstring>
#define n2 666013
char s[10000001],s1[21];
int i,j,n,m,k,l,v[666014],x=1,nr,nr1,sol;
int main ()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
gets(s);
gets(s1);
n=strlen(s1);
m=strlen(s);
for(i=0;i<n;i++)
    {
    nr=(nr*123)%n2+s[i];
    nr=nr%n2;
    if(i!=0)
        {
        x=x*123;
        x=x%n2;
        }
    }
v[nr]++;
for(i=n;i<=m;i++)
    {
    nr=nr-((x*s[i-n])%n2);
    nr=nr%n2;
    if(nr<0)
        nr+=n2;
    nr=nr*123+s[i];
    nr=nr%n2;
    v[nr]++;
    }
nr=0;
for(i=0;i<n;i++)
    {
    nr=nr*123+s1[i];
    nr=nr%n2;
    }
if(v[nr]>0)
    {
    sol+=v[nr];
    v[nr]=0;
    }
while(gets(s1)!=NULL)
    {
    nr=0;
    for(i=0;i<n;i++)
        {
        nr=nr*123+s1[i];
        nr=nr%n2;
        }
    if(v[nr]>0)
        {
        sol+=v[nr];
        v[nr]=0;
        }
    }
printf("%d",sol);
return 0;
}