История изменений
Исправление Lrrr, (текущая версия) :
о, не сразу заметил что там еще и ограничение на n*q
. Ну тогда все совсем просто. Сортируем оба массива и для каждого запроса делаем бинпоиск «количество дробей меньше заданной» по вещественному значению дроби (меньше 10**6). На каждой итерации бинпоиска проходим по всем знаменателям и находим, на какой позиции находится первый (или последний) подходящий числитель. Это можно сделать двумя указателями.
Итоговая сложность n*q*log(10**6)
без выделения дополнительной памяти - должно пройти. Если не пройдет из-за точности, то авторов задачи следует скормить мелкозявру айронбага.
Исходная версия Lrrr, :
о, не сразу заметил что там еще и ограничение на n*q
. Ну тогда все совсем просто. Сортируем оба массива и для каждого запроса делаем бинпоиск «количество дробей меньше заданной» по вещественному значению дроби (меньше 10**6). На каждой итерации бинпоиска проходим по всем знаменателям и находим, на какой позиции находится первый (или последний) подходящий числитель. Это можно сделать двумя указателями.
Итоговая сложность nqlog(10**6) без выделения дополнительной памяти - должно пройти. Если не пройдет из-за точности, то авторов задачи следует скормить мелкозявру айронбага.