Pagini recente » Cod sursa (job #2295547) | Cod sursa (job #1114520) | Cod sursa (job #3173372) | Cod sursa (job #3258866) | Cod sursa (job #3217258)
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <unordered_map>
#include <set>
using namespace std;
ifstream fin ("abc2.in");
ofstream fout("abc2.out");
int n,j,sol,i,ch;
long long p;
unordered_map <long long,bool> M;
string text,pattern;
int main()
{
fin>>text;
while(fin>>pattern)
{
long long nr=0;
ch=pattern.size();
for(i=0;i<pattern.size();i++)
nr=nr*3+pattern[i]-'a';
M[nr]=1;
}
p=1;
for(i=1;i<ch;i++)
p*=3;
long long nr=0;
for(i=0;i<text.size();i++)
{
if(i>=ch)
nr-=(text[i-ch]-'a')*p;
nr=nr*3+text[i]-'a';
if(i>=ch-1&&M.find(nr)!=M.end())
sol++;
}
fout<<sol;
return 0;
}