Технокубок 2021 - Отборочный Раунд 1 |
---|
Закончено |
Меха-Наруто играет в компьютерную игру. У его персонажа есть следующая способность: нанести вражескому герою $$$a$$$ единиц урона, затем восполнять ему $$$b$$$ единиц здоровья в конце каждой секунды, начиная со следующей, на протяжении ровно $$$c$$$ секунд. В частности, если эта способность применяется в момент времени $$$t$$$, то здоровье врага уменьшается на $$$a$$$ в момент времени $$$t$$$, а затем увеличивается на $$$b$$$ в моменты $$$t + 1$$$, $$$t + 2$$$, ..., $$$t + c$$$.
У способности есть время перезарядки, равное $$$d$$$ секундам, то есть если Меха-Наруто применяет способность в момент времени $$$t$$$, то в следующий раз он может её применить не раньше момента $$$t + d$$$. По некоторым причинам Меха-Наруто может использовать способность только в целые моменты времени, поэтому все изменения здоровья врага также происходят в целочисленные моменты.
Эффекты от разных применений заклинания накладываются друг на друга. В частности, если вражеский герой находится под действием $$$k$$$ заклинаний, применённых ранее и ещё не истёкших, то его здоровье увеличится на $$$k\cdot b$$$. Помимо этого все изменения, которые происходят в один и тот же момент времени, учитываются одновременно.
Теперь Меха-Наруто интересно, может ли он убить своего оппонента просто применяя свою способность так часто, как только можно (то есть каждые $$$d$$$ секунд). Герой считается погибшим, если уровень его здоровья становится равным $$$0$$$ или ниже. Предположим, что здоровье вражеского персонажа не изменяется никаким образом, кроме как от применения заклинания. Какое наибольшее количество здоровья может быть у врага, чтобы Меха-Наруто мог его убить?
Первая строка содержит единственное число $$$t$$$ ($$$1\leq t\leq 10^5$$$) — число тестов.
Каждый тест описывается четвёркой натуральных чисел $$$a$$$, $$$b$$$, $$$c$$$ и $$$d$$$ ($$$1\leq a, b, c, d\leq 10^6$$$), записанных через пробел и означающих соответственно мгновенный урон от способности, ежесекундно восполняемый объём здоровья, время действия каждого заклинания и время перезарядки способности.
Для каждого теста выведите на отдельной строке $$$-1$$$, если способность может рано или поздно убить любого врага, каким бы большим ни был его уровень здоровья; в противном случае выведите наибольшее число здоровья, при котором оппонент будет убит.
7 1 1 1 1 2 2 2 2 1 2 3 4 4 3 2 1 228 21 11 3 239 21 11 3 1000000 1 1000000 1
1 2 1 5 534 -1 500000500000
В первом тесте из условия любая единица урона отменяется через секунду, поэтому Меха-Наруто не может нанести больше, чем 1 единицу урона.
В четвёртом тесте из условия герой оппонента получает:
Можно доказать, что ни к какому моменту времени враг не получит суммарно $$$6$$$ или больше урона, поэтому ответ на этот тест есть $$$5$$$. Обратите внимание, как производится пересчёт здоровья: например, если бы у врага было $$$8$$$ здоровья, он бы не умер в момент времени $$$1$$$, как если бы мы сначала вычли из его здоровья $$$4$$$ единицы, а затем сочли бы его мёртвым, не успев добавить $$$3$$$ единицы от лечения.
В шестом тесте из условия герой со сколько угодно большим количеством здоровья рано или поздно умрёт.
В седьмом тесте из условия ответ не вмещается в 32-битный целочисленный тип.
Название |
---|