У меня есть класс, но программа вылетает после создания объекта его типа.
const int B = 707; /// sqrt(N)
struct Mex {
int x[N], group[B + 5];
/*
* This struct can push and pop an element with O(1),
* calculate MEX with O(sqrt(N))
*/
Mex() {
fill(x, x + N, 0);
fill(group, group + N, 0);
}
void push(int val) {
++x[val];
if (x[val] == 1)
++group[val / B];
}
void pop(int val) {
--x[val];
if (x[val] == 0)
--group[val / B];
}
int getValue() {
for (int i = 0; i <= B + 1; ++i) {
if (group[i] < B) {
for (int j = i * B, end = i * (B + 1); j < end; ++j) {
if (x[j] == 0) {
return j;
}
}
}
}
return -1;
}
};
Ну смотрите:
const int B = 707; /// sqrt(N)
int x[N], group[B + 5];
Значит, B
ну очень сильно меньше N
.
А заполняете вы
fill(group, group + N, 0);
куда больше, чем влазит. Портя при этом память...
P.S. Остальной функционал не смотрел. Все равно
программа вылетает после создания объекта его типа
до него дело не доходит...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как в opengl c++ нарисовать дугу которая начинается с определённой точки и заканчивается определённой точкой Пример - дуги которые между многоугольниками...
Покажите пожалуйста простой пример с variadic templatesХотелось бы следующее
при таком коде во время запуска игры по идее должно пропадать действие при нажатии кнопкиБез добавления eventHandler игра не реагирует, но вот...