Pagini recente » Cod sursa (job #1079683) | Cod sursa (job #929477) | Cod sursa (job #1814159) | Cod sursa (job #1593422) | Cod sursa (job #2296015)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
#define mod 30011
vector <int> v[30011];
int verificare_candidati(int nr)
{
int i,aux;
aux=nr%mod;
for(i=0;i<v[aux].size();i++)
{
if(v[aux][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;
unsigned lgcuv,lgsir;
fin>>sir_initial;
lgsir=sir_initial.size();
while(!fin.eof())
{
fin>>cuvant;
lgcuv=cuvant.size();
nr=0;
for(i=0;i<lgcuv;i++)
{
nr*=3;
nr+=(cuvant[i]-'a');
}
v[nr%mod].push_back(nr);
}
nr=0;
for(i=0;i<lgcuv;i++)
{
p*=3;
nr*=3;
nr+=(sir_initial[i]-'a');
}
p/=3;
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
for(i=lgcuv;i<lgsir;i++)
{
nr-=p*(sir_initial[i-lgcuv]-'a');
nr*=3;
nr+=(sir_initial[i]-'a');
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
}
fout<<nr;
fin.close();
fout.close();
return 0;
}