Pagini recente » Cod sursa (job #1886323) | Monitorul de evaluare | Cod sursa (job #2428437) | Cod sursa (job #990422) | Cod sursa (job #612682)
Cod sursa(job #612682)
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<ext/hash_set>
#define MAX 10000010
using namespace std;
using namespace __gnu_cxx;
char x[MAX],cuv[21];
hash_set <unsigned int , hash<int> > h;
unsigned int l,n,sol,masc,p3=1;
inline unsigned int cod(char *y) {
unsigned int i,sol = 0;
for(i = 0; i<=l; ++i)
sol = sol*3 + y[i] - 'a';
return sol;
}
int main() {
int i;
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
fgets(x,MAX,stdin);
n=strlen(x) - 2;
fgets(cuv,22,stdin);
l=strlen(cuv) - 2;
h.insert(cod(cuv));
for(h.insert(cod(cuv)); fgets(cuv,22,stdin); h.insert(cod(cuv)));
for(i=0 ; i<l ; ++i) {
masc=masc*3 + x[i] - 'a';
p3*=3;
}
for(i=l ; i<=n; ++i) {
masc=(masc % p3)*3 +x[i]-'a';
sol+=h.count(masc);
}
printf("%d",sol);
return 0;
}