Дистанционная подготовка: Задача №744. Хеширование
Задача №744. Хеширование
от Иван Жаров - Суббота 21 Ноябрь 2015, 21:36
  У меня WA8, хотя алгоритм вроде правильный, просто считываю сначала тип запроса, потом, если надо - добавляю хеши строчки в 2 сета.

Код:
#include
#include
#include
#include
#include
#include
#include

using namespace std;

int h2(string s)
{
int p = 179, m = 2147483647, h=0;
for (int i=0; i h *= p;
h += s[i] - 'a';
h %= m;
}
return h;
}

int h1(string s)
{
int p = 29, m = 1791791791, h=0;
for (int i=0; i h *= p;
h += s[i] - 'a';
h %= m;
}
return h;
}

int main()
{
string t, s;
set st;
set st2;
int h, hh;

while (1) {
cin >> t;
if (t == "#") {
break;
}
else {
cin >> s;
h = h1(s);
hh = h2(s);
if (t == "+") {
st.insert(h);
st2.insert(hh);
}
else {
if (st.find(h) != st.end() && st2.find(hh) != st2.end()) {
cout