Pagini recente » Cod sursa (job #1025600) | Cod sursa (job #2573077) | Cod sursa (job #2246338) | Cod sursa (job #1762503) | Cod sursa (job #1850909)
#include <iostream>
#include<bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <vector>
#define M 319993
using namespace std;
//ifstream fin("abc2.in");
//fstream fout("abc2.out");
FILE *f=fopen("abc2.in", "r");
FILE *g=fopen("abc2.out", "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;
fscanf(f, "%s", s);
fscanf(f, "%s", cuv);
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)){
fscanf(f, "%s", cuv);
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;
}