dmitrii2004, Переменная m используется и для количества запросов (граница цикла по i) и внутри бинпоиска. Она в бинпоиске перетирается и цикл внезапно заканчивается.
versidue, Ну, в стандерте написано, "числа с плавающей точкой, поддерживающие стандарт IEEE". Там не сказано, что он всегда поддерживается. Там даже есть ссылка на метод определения, поддерживается ли этот стандарт и напротив float написано "usually true". Т.е. не всегда.
dmitrii2004, Постарайтесь напистаь сами. Если что-то непонятно - спрашивайте. Первый вариант с деревом отрезков - по-моему, концептуально проще. Код дерева отрезков есть по ссылке. Вам только нужно будет изменить сумму на gcd в паре мест. А дальше один цикл for по левой границе и вложенный цикл while по правой.
Данил Васькевич, Если heap реализована через vector, то просто сделать у него pop_back(). Если вы там бинарное дерево с указателями впендюрили, то тогда, да - delete.
Данил Васькевич, Нет. Первый и последний в массиве кучи. Первый - да - будет с максимальным приоритетом. А последний - как получится, вряд ли с минимальным.
dmitrii2004, Ну нет. писать за вас решение я не буду. За этим на freelance.habr.ru
Что-то непонятно в описании решения? Раскладывать числа на множители вы умеете - у вас это в конце программы уже есть. Только вы там сумму множителей считаете, а надо их в массив складывать и степень в цикле while инкрементировать. Вы максимум в массиве найти не можете? Или цикл по k от 1 до m написать не можете?
LoliDeveloper, Нет. Отображение A->B сопоставляет каждому элементу A - один элемент B. Не подмножество, а всегда ровно один элемент.
Неинъективная функция X->Y значит, что разным X может соответствовать одинаковый Y. И это нормально (представьте параболу). Но это все-равно не позволяет иметь разные Y для одного X (это ближе к тому, что отображение Y->X, если оно есть - неинъективно)
Чтобы у вас одному X могли соответствовать много Y, вам надо определять ваше отображение как X->2^Y. Как тут вводить непрерывность уже не совсем понятно. И тем более непонтяно, как на подмножестве Y применять теорему о непрерывной функции. Вам нужно число, надо както взять x-y, но какой y из всех вариантов брать? Это все, конечно, можно формализовать, но вы замучаетесь.
Лучше возьмите определение непрерывной кривой и пляшите от него.
LoliDeveloper, Вот вам и надо доказать. что для каких-то двух точек из разных полуплоскостей любая соединяющая их непрерывная кривая проходит через запрещенное множество x=y.
Вроде очевидно - раз на одном конце у кривой x-y > 0, на другом конце x-y < 0, и она непрерывна, то где-то будет ноль. Но как это доказать формально? Вот можно воспользоватся теоремой о промежуточном значении непрерывной функции. Для этого надо кривую переделать в функцию. Например, можно ее параметризовать от 0 до 1 и вот и вылезает непрерывная функция f:[0,1]->R^2, которую можно пределать в [0,1]->R навесив на нее сверху x-y.
Ваша попытка ввести функцию f:X->Y похожа на это, но недостаточно формальна и покрывает не все непрерывные кривые. Потому что кивая может проходить через один и тот же X много раз. А для доказательства несуществования вам надо показать, что абсолютно все кривые невозможны.