Вы можете попробовать двоичное индексированное дерево. Сложность времени: O (q * log (n)), где q - количество запросов.