eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

База данных с высокой нагрузкой

База данных с высокой нагрузкой

Генри описывает сценарий миграции базы данных с высокой нагрузкой. Скрипт представляет собой список из n транзакций. i -я транзакция состоит из ai запросов. Генри хочет разделить скрипт на минимально возможное количество пакетов, где каждый пакет содержит либо одну транзакцию, либо последовательность последовательных транзакций, а общее количество запросов в каждом пакете не превышает t.

К сожалению, Генри не знает точного значения t для производственной базы данных, поэтому он собирается оценить минимальное количество пакетов для q возможных значений t: t1, t2, . . . , tq. Помогите Генри рассчитать количество транзакций для каждой из них.

Входные данные

Первая строка содержит количество транзакций n (1n200 000) в миграционном скрипте.

Вторая строка содержит n целых чисел a1, a2, . . . , an - количество запросов в каждой транзакции (1ai; Σ ai106).

Третья строка содержит количество запросов q (1q105).

Четвертая строка содержит q целых чисел t1, t2, . . . , tq (1ti ≤ Σ ai).

Выходные данные

Выведите q строк. В i-ой строке выведите минимальное количество пакетов, каждый из которых содержит не более ti запросов. Если невозможно разбить скрипт на пакеты для некоторого ti, то выведите "Impossible".

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

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
6
4 2 3 1 3 4
8
10 2 5 4 6 7 8 8
Выходные данные #1
2
Impossible
4
5
4
3
3
3
Источник 2019 ACM NEERC, Северный регион, Октябрь 26, Задача H