Pagini recente » Cod sursa (job #931103) | Cod sursa (job #1767017) | Cod sursa (job #436905) | Cod sursa (job #1077344) | Cod sursa (job #1362861)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
#define LCUV 21
#define LMAX 10000005
#define MOD 666013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
bool ok,ap;
char cuv[LCUV],s1[LMAX];
int nr,numar,p=1,nr_poz;
vector <int>v[MOD+5];
vector <int>::iterator it;
int main()
{
f.get(s1,LMAX);f.get();
f.get(cuv,LMAX);f.get();
int l1=strlen(s1);
int l=strlen(cuv);
for (int i=0;i<l;i++)
{
nr+=(s1[i]-'a')*p;
numar+=(cuv[i]-'a')*p;
p*=4;
}
p/=4;
v[nr%MOD].push_back(nr);
for (int i=l;i<l1;i++)
{
nr=nr/4+p*(s1[i]-'a');
v[nr%MOD].push_back(nr);
}
do
{
ok=0;
ap=0;
for (it=v[numar%MOD].begin();it!=v[numar%MOD].end();it++)
if (*it==numar)
{
nr_poz++;
ap=1;
}
if (ap)
v[numar%MOD].erase(find(v[numar%MOD].begin(),v[numar].end(),numar));
if (f.get(cuv,LMAX))ok=1;
f.get();
p=1;numar=0;l=strlen(cuv);
for (int i=0;i<l;i++)
{
numar+=(cuv[i]-'a')*p;
p*=4;
}
}
while (ok);
g<<nr_poz;
}