Pagini recente » Cod sursa (job #191199) | Cod sursa (job #1004678) | Cod sursa (job #960088) | Cod sursa (job #2081844) | Cod sursa (job #2009918)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define MOD 13831
#define uint unsigned int
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
char s[10000005],cuv[25];
vector <uint> v[13831];
int clen,slen;
bool Cnt(uint x)
{ int lin = x % MOD, i;
for(i = 0; i < v[lin].size(); i++)
if (v[lin][i] == x)
return 1;
return 0;
}
void Ins(uint x)
{ int lin = x % MOD, i;
if (Cnt(x))
return;
v[lin].push_back(x);
}
int main()
{ uint i, pw, val, sol = 0;
f >> s;
while(!f.eof())
{ f >> cuv;
pw = 1;
val = 0;
clen = strlen(cuv);
for(i = 0; i < clen; i++)
{ val += (cuv[i] - 'a') * pw;
pw *= 3;
}
if (!f.eof()) Ins(val);
}
slen = strlen(s);
pw = 1;
val = 0;
for(i = 0; i < slen; i++)
{
if (i < clen)
{ val += (s[i] - 'a') * pw;
pw *= 3;
}
else
{ val /= 3;
val += (s[i] - 'a') * pw;
}
if (i == clen-1)
pw/=3;
if (i >= clen-1 && Cnt(val))
sol++;
}
g << sol;
return 0;
}