Pagini recente » Cod sursa (job #819804) | Cod sursa (job #1210888) | Cod sursa (job #590066) | Cod sursa (job #2914977) | Cod sursa (job #1309792)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
char text[10000099];
char cuvant[25];
int sol;
#define MOD 30011
vector<unsigned>h[MOD];
int cauta(unsigned int x)
{
for(int i=0;i<h[x%MOD].size();i++)
{
if(h[x%MOD][i]==x)
return 1;
}
return 0;
}
int main()
{
freopen("abc2.in" , "r" , stdin);
freopen("abc2.out", "w" , stdout);
scanf("%s", text);
int l,x,p=1;
while( !feof(stdin) ){
scanf("%s", cuvant);
l = strlen(cuvant);
x = 0;
for(int i=0; i<l;++i)
x = x*3 + cuvant[i] - 'a';
h[x%MOD].push_back(x);
}
int len = strlen(text);
x = 0;
for(int i=0;i<l;++i){
x = x*3 + text[i] - 'a';
p *= 3;
}
p /= 3;
sol += cauta(x);
for( int i = l; i < len ; ++ i){
x-= ( text[i-l] - 'a' ) * p;
x = x * 3 + text[i] - 'a';
sol += cauta(x);
}
printf("%d",sol);
return 0;
}