Pagini recente » Cod sursa (job #201411) | Profil StarGold2 | Cod sursa (job #2270072) | Cod sursa (job #353458) | Cod sursa (job #2295864)
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 666013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <long long> H[MOD];
int nr;
int cauta(int val)
{
unsigned int n,i;
n=val%MOD;
for(i=0;i<H[n].size();i++)
{
if(H[n][i]==val)
{
return 1;
}
}
return 0;
}
int main()
{
string s,cuv;
int i,n,d;
long long val,p;
f>>s;
while(f>>cuv)
{
val=0;
p=1;
n=cuv.size();
for(i=0;i<n;i++)
{
val=val+p*(cuv[i]-'a');
p=p*3;
}
H[val%MOD].push_back(val);
}
val=0;
p=1;
for(i=0;i<n;i++)
{
val=val+p*(s[i]-'a');
p=p*3;
}
p=p/3;
if(cauta(val)==1)
{
nr++;
}
d=s.size();
while(i<d)
{
val=val-(s[i-n]-'a');
val=val/3+(s[i]-'a')*p;
if(cauta(val)==1)
{
nr++;
}
i++;
}
g<<nr;
return 0;
}