Pagini recente » Cod sursa (job #765413) | Cod sursa (job #2774532) | Cod sursa (job #3231868) | Cod sursa (job #768362) | Cod sursa (job #1831881)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <string.h>
#define MAXT 10000009
#define MAXC 25
#define MOD 200003
using namespace std;
char sir[MAXT];
vector<int> v[MOD];
int hashFunc(char cuv[MAXC]){
int a = 7, i, len;
int h = 0;
len = strlen(cuv);
for(i = 1;i < len; ++i){
h = h + cuv[i] * a;
a = a * a;
}
return h;
}
int main(){
char cuv[MAXC],aux[MAXC];
fstream f("abc2.in",ios::in);
fstream g("abc2.out",ios::out);
f.getline(sir,MAXT,'\n');
int i, len, total = 0, l, m, y, x, j;
f.getline(cuv,MAXC,'\n');
x = hashFunc(cuv);
v[x % MOD].push_back(x);
l = strlen(cuv);
while(!f.eof()){
f.getline(cuv,MAXC,'\n');
x = hashFunc(cuv);
v[x % MOD].push_back(x);
}
len = strlen(sir);
for(i = 0;i <= len - l; ++i){
strcpy(aux,"");
strncpy(aux,sir + i,l);
aux[l] = '\0';
x = hashFunc(aux);
m = v[x % MOD].size();
y = x % MOD;
for(j = 0;j < m; ++j)
if(v[y][j] == x){
++total;
j = m + 10;
}
}
g << total;
}