Там простая идея:
Запомнить запросы Query{left, right, id}
Распределить их по блокам размера sqrt(n) по левой границе, внутри блоков посортить по правой: если блок с четным индексом, то в порядке возрастания правой границы, иначе в порядке убывания
Дальше методом двух указателей обработать все запросы