notes/child/info/olymp/tasks-dl/tree/segment-tree-1.txt
Ihar Hancharenka 5dff80e88e first
2023-03-27 16:52:17 +03:00

54 строки
2.3 KiB
Plaintext

Реализуйте структуру данных, хранящую информацию об N (1 ≤ N ≤ 100000) целых числах A1, ..., AN. Структура должна поддерживать следующие операции.
1) INIT(N) Инициализация числом N. При этом каждому числу Ai присваивается значение 0.
2) MODIFY(l, r, value) Для каждого i, l ≤ i ≤ r, изменить Ai на Ai+value.
3) FINDCOVER(l,r) Вывод в выходной файл количества Ai, l ≤ i ≤ r, таких, что Ai > 0.
Input
Входной файл содержит не более 100000 операций. Каждая операция описывается в отдельной строке. Описание операции начинается с целого числа от 1 до 3 --- ее номера в списке выше. Далее следуют параметры операции в порядке их перечисления в скобках. Числа в каждой строке разделены пробелами.
Все операции корректны. Это значит, что:
операция INIT является самой первой операцией во входном файле и больше нигде в нем не встречается;
для операции MODIFY выполняются ограничения 1 ≤ l ≤ r ≤ N и -10000 ≤ value ≤ 10000;
для операции FINDCOVER выполняются ограничения 1 ≤ l ≤ r ≤ N;
в любой момент времени все числа Ai неотрицательны.
Output
Выполните операции в порядке их перечисления в входном файле. Если для выполнения операции нужно вывести некоторую информацию в выходной файл, то выведите эту информацию. Вывод для каждой операции оформите в отдельной строке.
Example input:
1 5
3 2 5
2 2 2 1
3 2 3
2 1 3 1
3 1 5
2 1 3 -1
3 2 4
2 3 4 3
3 3 5
2 1 1 7
3 5 5
2 1 1 -7
3 1 1
2 3 4 -3
3 1 3
2 2 2 -1
3 1 3
Example output:
0
1
3
1
2
0
0
1
0