EduBrick

K. Сколько меньше на отрезке

2500 мс · 512 МБ · всё или ничего

Дан массив, который не меняется. Для каждого запроса (l,r,x)(l, r, x) выведите, сколько элементов на отрезке [l,r][l, r] строго меньше xx. Запросы приходят по одному и должны обрабатываться сразу: каждый следующий зависит от ответа на предыдущий.

В прошлом занятии такая задача решалась офлайн — сортировкой запросов. Здесь так нельзя, и нужна структура.

Формат ввода

В первой строке nn и qq (1≤n≤1051 \le n \le 10^5, 1≤q≤2⋅1051 \le q \le 2 \cdot 10^5). Во второй — nn чисел aia_i (0≤ai≤1090 \le a_i \le 10^9). Далее qq строк по три числа l′l', r′r', x′x'.

Настоящие параметры запроса получаются так: l=((l′+last) mod n)+1l = ((l' + \text{last}) \bmod n) + 1, r=((r′+last) mod n)+1r = ((r' + \text{last}) \bmod n) + 1, x=(x′+last) mod (109+1)x = (x' + \text{last}) \bmod (10^9 + 1), где last\text{last} — ответ на предыдущий запрос (ноль для первого). Если после этого l>rl > r, поменяйте их местами. Все l′l', r′r', x′x' неотрицательны и не превосходят 10910^9.

Формат вывода

Для каждого запроса выведите ответ на отдельной строке.

Примеры

ввод
5 3
1 3 2 5 4
0 4 3
0 0 0
1 1 1
вывод
2
0
0
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.