Максимальный элемент, присутствующий в массиве после выполнения запросов на добавление K к диапазону индексов [L, R]

Опубликовано: 22 Сентября, 2022

Дан массив 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)