Pagini recente » Cod sursa (job #351246) | Cod sursa (job #194820) | Cod sursa (job #984793) | Cod sursa (job #707586) | Cod sursa (job #2296010)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
const int mod=11257;
vector <int> v[10000001];
int verificare_candidati(int nr)
{
int i;
for(i=0;i<v[nr%mod].size();i++)
{
if(v[nr%mod][i]==nr)
{
return 1;
}
}
return 0;
}
int main()
{
ifstream fin("abc2.in");
ofstream fout("abc2.out");
string sir_initial,cuvant;
int nr,p=1,nr_candidati=0,i;
fin>>sir_initial;
while(!fin.eof())
{
fin>>cuvant;
nr=0;
for(i=0;i<cuvant.size();i++)
{
nr*=3;
nr+=(cuvant[i]-'a');
}
v[nr%mod].push_back(nr);
}
nr=0;
for(i=0;i<cuvant.size();i++)
{
nr+=p*(sir_initial[i]-'a');
p*=3;
}
p=p/3;
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
for(i=cuvant.size();i<sir_initial.size();i++)
{
nr-=(sir_initial[i-cuvant.size()]-'a');
nr=nr/3+p*(sir_initial[i]-'a');
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
}
fout<<nr;
fin.close();
fout.close();
return 0;
}