Pagini recente » Cod sursa (job #8777) | Cod sursa (job #343501) | Cod sursa (job #1324220) | Cod sursa (job #2248251) | Cod sursa (job #1309373)
#include <fstream>
#include <vector>
#include <map>
#include <string>
#define pb push_back
#define mod 966013
using namespace std;
//map<int, int> kush;
vector<int> kush[mod];
ifstream f("abc2.in");
ofstream g("abc2.out");
string ss, s;
int qq, i, lenght;
void insert_value(int x)
{
int list=x%mod;
vector<int>::iterator it;
for(it=kush[list].begin(); it!=kush[list].end(); ++it)
if(*it==x) return;
kush[list].pb(x);
}
inline int find_value(int x)
{
int list=x%mod;
vector<int>::iterator it;
for(it=kush[list].begin(); it!=kush[list].end(); ++it)
if(*it==x) return 1;
return 0;
}
int main()
{
getline(f, s);
while(getline(f, ss))
{
lenght=ss.size();
int x=0;
for(i=0; i<lenght; ++i)
x=x*3+ss[i]-'a';
insert_value(x);
}
int len=lenght;
lenght=s.size();
int pow=1, x=0;
for(i=0; i<len; ++i)
{
x=x*3+s[i]-'a';
pow*=3;
}
long long word_number=0;
pow/=3;
word_number+=find_value(x);
for(i=len; i<lenght; ++i)
{
x-=pow*(s[i-len]-'a');
x=x*3+s[i]-'a';
word_number+=find_value(x);
}
g<<word_number<<"\n";
return 0;
}