Pagini recente » Cod sursa (job #1260643) | Cod sursa (job #665046) | Cod sursa (job #2169455) | Cod sursa (job #1837372)
#include<unordered_map>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#define MOD 100000
#define M1 24
#define B1 17
using namespace std;
fstream fin("abc2.in",ios::in),fout("abc2.out",ios::out);
int ind=1,ls,ls1,r=0;
unsigned int k1,p=1,aux;
vector<unsigned int> has[MOD+20];
string s,s1;
inline void cauta(unsigned int val,unsigned int modulo)
{
for(int i=0;i<has[modulo].size();i++)
{
if(has[modulo][i]==val)
{
r++;
return ;
}
}
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int i,j,c;
fin>>s;ls=s.size();
while(fin>>s1)
{
ls1=s1.size();
k1=0;
for(j=0;j<ls1;j++)
{
c=(s1[j]-'a');
k1=k1+k1+k1+c;
}
aux=k1%MOD;
has[aux].push_back(k1);
}
k1=0;
if(ls1<=ls)
{
for(i=0;i<ls1;i++)
{
if(i>0) p=p*3;
c=(s[i]-'a');
k1=3*k1+c;
}
aux=k1%MOD;
cauta(k1,aux);
for(i=ls1;i<ls;i++)
{
c=(s[i]-'a');
while(k1>=p) k1=k1-p;
k1=3*k1+c;
aux=k1%MOD;
cauta(k1,aux);
}
}
fout<<r;
}