Codeforces Round 806 (Div. 4) |
---|
Закончено |
У вас есть $$$n$$$ сундуков. $$$i$$$-й сундук содержит $$$a_i$$$ монет. Вы должны открыть все $$$n$$$ сундуков по порядку, начиная с сундука $$$1$$$, заканчивая сундуком $$$n$$$.
Также существуют два вида ключей, которые вы можете использовать для открытия каждого сундука:
Вам необходимо использовать $$$n$$$ ключей, по одному на каждый сундук. Изначально у вас нет ключей и монет. Если вы хотите использовать хороший ключ, то его надо купить.
В процессе вы можете уходить в минус — например, если у вас есть $$$1$$$ монета, вы можете купить хороший ключ за $$$k=3$$$ монеты, и у вас станет $$$-2$$$ монеты.
Найдите максимальное количество монет, которое вы сможете получить в итоге после открытия всех $$$n$$$ сундуков по порядку от $$$1$$$ до $$$n$$$.
В первой строке содержится одно целое число $$$t$$$ ($$$1 \leq t \leq 10^4$$$) — количество наборов входных данных.
В первой строке каждого набора содержатся два целых числа $$$n$$$ и $$$k$$$ ($$$1 \leq n \leq 10^5$$$, $$$0 \leq k \leq 10^9$$$) — количество сундуков и стоимость хорошего ключа соответственно.
Вторая строка каждого набора содержит $$$n$$$ чисел $$$a_i$$$ ($$$0 \leq a_i \leq 10^9$$$) — количество монет в каждом из сундуков.
Гарантируется, что сумма $$$n$$$ по всем наборам не превосходит $$$10^5$$$.
Для каждого набора выведите одно число — максимальное количество монет, которое вы сможете получить после открытия сундуков с $$$1$$$ по $$$n$$$.
Пожалуйста, обратите внимание, что ответ для некоторых наборов входных данных может не поместиться в 32-разрядный целочисленный тип, поэтому вы должны использовать по крайней мере 64-разрядный целочисленный тип в вашем языке программирования (например, long long для C++).
54 510 10 3 11 213 1210 10 2912 515 74 89 45 18 69 67 67 11 96 23 592 5785 60
11 0 13 60 58
В первом наборе одна из возможных стратегий следующая:
Название |
---|