Для массива из N положительных элементов. Предположим, что мы перечислим все N × (N + 1)/2 непустые непрерывные подмассивы массива A, а затем заменили все подмассивы на максимальный элемент, присутствующий в соответствующем подмассиве. Итак, теперь мы имеем N × (N + 1)/2 элементов, где каждый элемент является максимальным среди своего подмассива.
Теперь у нас есть Q-запросы, где каждый запрос является одним из трех типов:
1 K: Нам нужно рассчитывать числа, строго превышающие K среди тех элементов N × (N + 1)/2.
2 K: Нам нужно считать числа, строго меньшие K среди тех элементов N × (N + 1)/2.
3 K: Нам нужно подсчитать числа, равные K среди тех элементов N × (N + 1)/2.
Теперь главная проблема, стоящая перед лицом N, может быть до 10 ^ 6. Поэтому я не могу сгенерировать все эти элементы N × (N + 1)/2. Помогите решить эту проблему.
Пример: пусть N = 3 и Q = 2. Пусть массив A будет [1,2,3], тогда все под массивы:
[1] -> [1]
[2] -> [2]
[3] -> [3]
[1,2] -> [2]
[2,3] -> [3]
[1,2,3] -> [3]
Итак, теперь мы имеем [1,2,3,2,3,3]. При Q = 2 так:
Query 1 : 3 3
Это означает, что нам нужно указать количество чисел, равное 3. Таким образом, ответ равен 3, поскольку в сгенерированном массиве есть 3 числа, равные 3.
Query 2 : 1 4
Это означает, что нам нужно рассчитать количество чисел больше 4. Таким образом, ответ равен 0, поскольку в генерируемом массиве никто больше 4.
Теперь и N, и Q могут быть до 10 ^ 6. Итак, как решить эту проблему. Какая структура данных должна быть подходящей для ее решения.