Pagini recente » Cod sursa (job #825788) | Cod sursa (job #2809383) | Cod sursa (job #1670314) | Cod sursa (job #997443) | Cod sursa (job #2474706)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
vector<unsigned int> v[100020];
char s[10000005];
int main()
{
char c[22]={0};int i=0,auxmod=0,modi=100019,len=0,lens=0,gasit=0,j=0,dim=0; unsigned int nr=0,p=1; bool ok=0;
//citire text
fin.getline(s,10000002);
fin.getline(c,22); len=strlen(c);
for(i=nr=0;i<len;i++)nr=nr*3+(c[i]-'a');
v[nr%modi].push_back(nr);
while(fin.getline(c,22)){
for(i=nr=0;i<len;i++)nr=nr*3+(c[i]-'a');
auxmod=nr%modi;
ok=0;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(!ok)v[auxmod].push_back(nr);
}
for(i=2;i<=len;i++)p*=3; lens=strlen(s);
for(i=nr=0;i<len;i++)nr=nr*3+(s[i]-'a');
while(s[i]){ ok=0;
auxmod=nr%modi;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(ok)gasit++;
nr=(nr-(s[i-len]-'a')*p)*3+(s[i]-'a');
i++;
}
ok=0;
auxmod=nr%modi;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(ok)gasit++;
fout<<gasit;
return 0;
}