Pagini recente » Cod sursa (job #321182) | Cod sursa (job #2959642) | Cod sursa (job #128377) | Cod sursa (job #1672043) | Cod sursa (job #2295896)
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 9973
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <unsigned int> H[MOD];
int nr;
int cauta(unsigned 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;
unsigned int i,n,d,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;
}