Pagini recente » Cod sursa (job #535817) | Cod sursa (job #2614742) | Cod sursa (job #95671) | Cod sursa (job #2568658) | Cod sursa (job #1840825)
#include <iostream>
#include<bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <vector>
#define M 666013
using namespace std;
//ifstream fin("abc2.in");
//ofstream fout("abc2.out");
FILE *f = fopen("abc2.in", "r");
FILE *g = fopen("abc2.in", "w");
vector <unsigned int> h[M];
char s[10000001], cuv[50001];
int v[25];//puterile lui 3
int caut(long long x){
long long y = x % M, i, ss = h[y].size();
for(i = 0; i < ss; ++i){
if(h[y][i] == x) return 1;
}
return 0;
}
int main()
{
long long i;
unsigned n, n1 = 1, aux, nr = 0;
//fin>>s;
//fin>>cuv;
fgets(s, 10000001, f);
fgets(cuv, 50001, f);
n = strlen(s);
n1 = strlen(cuv);
v[0] = 1;
for(i = 1; i <= 24; i++)
v[i] = v[i - 1] * 3;
aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (cuv[i] - 'a');
}
if(caut(aux) == 0){
h[aux % M].push_back(aux);
}
while(!feof(f)){
//fin>>cuv;
fgets(cuv, 50001, f);
aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (cuv[i] - 'a');
}
if(caut(aux) == 0){
h[aux % M].push_back(aux);
}
}
aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (s[i] - 'a');
}
nr += caut(aux);
for(i = n1; i < n; i++){
aux /= 3;
aux += v[n1 - 1] * (s[i] - 'a');
nr += caut(aux);
}
//fout<<nr;
fprintf(g, "%d", nr);
return 0;
}