1. Главная
  2. Библиотека
  3. Другое
  4. Дано масив a довжини n та число s, для кожного індексу...
Разбор задачи

Дано масив a довжини n та число s, для кожного індексу i(1≤i≤n) потрібно знайти підмасив, який включає елемент з індексу i і має максимальну можливу суму, що не перевищує s, і або вивести цю суму, або сказати, що це неможливо. Більш формально, для кожного

  • Предмет: Другое
  • Автор: Кэмп
Дано масив a довжини n та число s, для кожного індексу i(1≤i≤n) потрібно знайти підмасив, який включає елемент з індексу i і має максимальну можливу суму, що не перевищує s, і або вивести цю суму, або сказати, що це неможливо. Більш формально, для кожного

Условие:

Дано масив a довжини n та число s, для кожного індексу i(1≤i≤n) потрібно знайти підмасив, який включає елемент з індексу i і має максимальну можливу суму, що не перевищує s, і або вивести цю суму, або сказати, що це неможливо.

Більш формально, для кожного i(1≤i≤n) потрібно знайти такі l,r(l≤i≤r), що ∑ \nj=l\nr

a \nj

≤s і ∑ \nj=l\nr

a \nj

є найбільшою можливою, та вивести ∑ \nj=l\nr

a \nj

.

Вхідні дані
Кожен тест містить кілька тестових випадків. Перший рядок містить кількість тестових випадків t(1≤t≤4⋅10
5
). Опис тестових випадків йде далі.

Перший рядок кожного тестового випадку містить два цілі числа n (1≤n≤10
6
) та s (−10
9
≤s≤10
9
).

Другий рядок містить n цілих чисел a \ni

(−10
9
≤a \ni

≤10
9
), що представляють елементи масиву.

Гарантується, що сума n по всіх тестових випадках не перевищує 10
6
.

Вихідні дані
Для кожного тестового випадку, для кожного i (1≤i≤n), виведіть або ціле число — відповідь для цього i, або x, якщо це неможливо.

Решение:

Нам дан массив a длины n и число s. Для каждого индекса i (от 1 до n) надо найти такой отрезок [l, r], что l ≤ i ≤ r, сумма элементов от a[l] до a[r] не превышает s, и при этом эта сумма максимально возможная среди всех отрезков, содержащих i, с условием суммы ≤ s. Если ни для одного отрезка, включающего i, сумма не превышает s, необходимо вывести символ “x”.

Ниже приводится пошаговое рассуждение, как можно решить задачу.

Шаг 1. Префиксные суммы
Определим массив префиксных сумм P, где:
  P[0] = 0,
  P[i] = P[i–1] + a[i] для i от 1 до n.
Тогд...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Для чего используются префиксные суммы при решении задач, подобных данной, где требуется найти подмассив с определёнными свойствами?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет