13079. І знову сума


Відправити розв'язок

Бали: 100
Time limit: 3.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Реалізуйте структуру даних, що підтримує безліч \(S\) цілих чисел, з яким дозволяється робити наступні операції:

  • \(add(i)\) --- додати до безлічі \(S\) число \(i\) (якщо він там вже є, то безліч не змінюється);
  • \(sum(l, r)\) --- вивести суму всіх елементів \(x\) з \(S\), які задовольняють нерівності \(l \le x \le r\).

Формат вхідних даних

На початку множина \(S\) порожня.

Перший рядок вхідного файлу містить \(n\) --- кількість операцій (\(1 \le n \le 300\,000\)).

Наступні \(n\) рядків містять операції. Кожна операція має вигляд або + \(i\), або ? \(l\) \(r\). Операція ? \(l\) \(r\) запитує \(sum(l, r)\).

Якщо операція + \(i\) йде у вхідному файлі на початку або після іншої операції +, вона задає операцію \(add(i)\). Якщо вона йде після запиту ?, і результат цього запиту був \(y\), виконується операція \(add((i + y) \bmod 10^9)\).

У всіх запитах та операціях додавання параметри лежать в інтервалі від \(0\) до \(10^9\).

Формат вихідних даних

Для кожного запиту виведіть одне число - відповідь на запит.

Приклад вхідних даних

6
+ 1
+ 3
+ 3
? 2 4
+ 1
? 2 4

Приклад вихідних даних

3
7

Коментарі

Ще немає коментарів.