Pagini recente » Cod sursa (job #1704091) | Statistici Birzaneanu Rares (brares) | Cod sursa (job #536612) | Rating Popescu Alexandru Ioan (DarkBold) | Cod sursa (job #2225804)
#include <cstdio>
#include <vector>
#define MOD 107547
using namespace std;
char s[10000001],cc[25];
vector <long long> v[MOD];
int elem;
int main()
{
FILE *fin=fopen ("abc2.in","r");
FILE *fout=fopen ("abc2.out","w");
int i,l,x;
long long nr,p3,sol;
char c;
fgets (s,10000000,fin);
elem=0;
while (fgets (cc,25,fin)){
nr=0;
i=0;
while (cc[i]!='\n'){
nr=nr*3+(cc[i]-'a');
i++;
}
v[nr%MOD].push_back(nr);
}
l=i;
p3=1;
for (i=1;i<l;i++)
p3*=3;
nr=0;
sol=0;
for (i=0;i<l;i++){
if (s[i]=='\n')
break;
nr=nr*3+(s[i]-'a');
}
for (i=0;i<v[nr%MOD].size();i++){
if (v[nr%MOD][i]==nr){
sol++;
break;
}
}
for (i=l;s[i]!='\n';i++){
nr=nr-p3*(s[i-l]-'a');
nr=nr*3+(s[i]-'a');
x=nr%MOD;
for (int j=0;j<v[x].size();j++){
if (v[x][j]==nr){
sol++;
break;
}
}
}
fprintf (fout,"%lld",sol);
return 0;
}