EduBrick

J. Сколько в диапазоне, без права заглянуть вперёд

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

Поддерживается мультимножество целых чисел, изначально пустое. Две операции: добавить число и узнать, сколько чисел множества лежит в заданном диапазоне.

Операции приходят зашифрованными: к каждому числу в операции нужно прибавить последний выведенный ответ. Пока ответ не получен, следующая операция неизвестна.

Формат ввода

В первой строке qq (1≤q≤2⋅1051 \le q \le 2 \cdot 10^5) — количество операций. В следующих qq строках операции.

Операция + y — добавить в множество число x=(y+last) mod (109+1)x = (y + last) \bmod (10^9 + 1).

Операция ? y z — вывести, сколько чисел множества лежит в диапазоне [min⁡(u,v),max⁡(u,v)][\min(u, v), \max(u, v)], где u=(y+last) mod (109+1)u = (y + last) \bmod (10^9 + 1) и v=(z+last) mod (109+1)v = (z + last) \bmod (10^9 + 1).

Здесь lastlast — последний выведенный ответ, до первого запроса last=0last = 0. Все числа yy и zz во вводе лежат в пределах от 00 до 10910^9.

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

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

Примеры

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