Pagini recente » Cod sursa (job #1332673) | Cod sursa (job #1451262) | Cod sursa (job #652698) | Cod sursa (job #2884917) | Cod sursa (job #1060316)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
#define MOD 99991
char a[10000010],aux[25];
vector<int> v[MOD+10];
inline bool find(int h)
{
int i,list=h%MOD;
for(i=0;i<v[list].size();++i)
if(v[list][i]==h)
return 1;
return 0;
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
int n,l=0,i,sol=0,h,p;
scanf("%s\n",&a);
n=strlen(a);
while(scanf("%s\n",&aux)!=EOF)
{
l=strlen(aux);
h=0;
for(i=0;i<l;++i)
h=h*3+aux[i]-'a';
if(!find(h))
v[h%MOD].push_back(h);
}
p=1;h=0;
for(i=1;i<l;++i)
p*=3;
for(i=0;i<l;++i)
h=h*3+a[i]-'a';
sol+=find(h);
for(;i<n;++i)
{
h-=p*(a[i-l]-'a');
h=h*3+a[i]-'a';
sol+=find(h);
}
printf("%d\n",sol);
return 0;
}