Pagini recente » Cod sursa (job #505055) | Cod sursa (job #2295850) | Cod sursa (job #1664708) | Cod sursa (job #2726990) | Cod sursa (job #1831843)
#include<fstream>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<array>
#include<functional>
#include<deque>
#include<math.h>
#include<unordered_set>
#include<queue>
#include<list>
#include<set>
#include<iomanip>
#include<bitset>
using namespace std;
int i, j, n, m, k, el,len,p3[23],nr,rez,lun;
char text[10000100],cuv[25];
unordered_map<int, int>mp;
int main()
{
//ifstream f("file.in");
//ofstream g("file.out");
ifstream f("abc2.in");
ofstream g("abc2.out");
f >> text;
p3[0] = 1;
for (i = 1; i <= 22; i++)
p3[i] = p3[i - 1] * 3;
while (f >> cuv)
{
if(len==0)
len = strlen(cuv);
nr = 0;
for (i = 0; i <= len - 1; i++)
nr += p3[len - 1 - i] * (cuv[i] - 'a');
mp[nr]++;
}
nr = 0;
for(i=0;i<=len-1;i++)
nr += p3[len - 1 - i] * (text[i] - 'a');
if (mp.find(nr) != mp.end())
rez++;
lun = strlen(text);
for (; i <= lun - 1; i++)
{
nr -= p3[len - 1] * (text[i-len] - 'a');
nr = nr * 3;
nr += (text[i] - 'a');
if(mp.find(nr)!=mp.end())
rez ++;
}
g << rez;
return 0;
}