Максимальный элемент, присутствующий в массиве после выполнения запросов на добавление K к диапазону индексов [L, R]
Дан массив arr[] , состоящий из N целых чисел ( изначально равный 0 ), и массив Q[] , состоящий из запросов вида {l, r, k} , задача каждого запроса состоит в том, чтобы добавить K к индексам от л до р (оба включительно). После выполнения всех запросов верните максимальный элемент, присутствующий в массиве.
Пример:
Input: N=10, q[] = {{1, 5, 3}, {4, 8, 7}, {6, 9, 1}}
Output: 10
Explanation:
Initially the array is → [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Query1 {1, 5, 3} results in [3, 3, 3, 3, 3, 0, 0, 0, 0, 0]
Query2 {4, 8, 7} results in [3, 3, 3, 10, 10, 7, 7, 7, 0, 0]
Query2 {6, 9, 1} results in [3, 3, 3, 10, 10, 8, 8, 8, 1, 0]
Maximum value in the updated array = 10
Подход: выполните следующие шаги, чтобы решить проблему.
- Проходим по вектору запросов и для каждого запроса {l, r, k}
- Добавьте k к a[l] и вычтите k из a[r+1]
- Инициализируйте переменную x = 0 , чтобы сохранить текущую сумму, и m = INT_MIN , чтобы сохранить максимальное значение.
- Пройдитесь по массиву, добавьте элементы в x и обновите m.
- Выведите максимальное значение m
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N+K), где N — размер массива, а K — количество запросов.
Космическая сложность: O(1)