1985F - Final Boss - CodeForces Solution


binary search brute force data structures

Please click on ads to support us..

Python Code:

import sys
import bisect
from collections import deque
from heapq import heappop, heappush

def solve(h, n, a, c):
    v = list(zip(a, c))
    v.sort()

    lo, hi = 1, 1000000000000000000
    mx = hi

    while lo <= hi:
        d = (lo + hi) // 2
        health = 0
        for attack, cost in v:
            cnt = 1 + (d - 1) // cost
            health += cnt * attack
            if health >= h:
                break

        if health >= h:
            mx = min(mx, d)
            hi = d - 1
        else:
            lo = d + 1

    return mx

def main():
    input = sys.stdin.read
    data = input().split()
    index = 0

    t = int(data[index])
    index += 1

    results = []
    for _ in range(t):
        h = int(data[index])
        n = int(data[index + 1])
        index += 2
        a = list(map(int, data[index:index + n]))
        index += n
        c = list(map(int, data[index:index + n]))
        index += n

        result = solve(h, n, a, c)
        results.append(result)

    for result in results:
        print(result)

if __name__ == "__main__":
    main()


Comments

Submit
0 Comments
More Questions

507B - Amr and Pins
379A - New Year Candles
1154A - Restoring Three Numbers
750A - New Year and Hurry
705A - Hulk
492B - Vanya and Lanterns
1374C - Move Brackets
1476A - K-divisible Sum
1333A - Little Artem
432D - Prefixes and Suffixes
486A - Calculating Function
1373B - 01 Game
1187A - Stickers and Toys
313B - Ilya and Queries
579A - Raising Bacteria
723A - The New Year Meeting Friends
302A - Eugeny and Array
1638B - Odd Swap Sort
1370C - Number Game
1206B - Make Product Equal One
131A - cAPS lOCK
1635A - Min Or Sum
474A - Keyboard
1343A - Candies
1343C - Alternating Subsequence
1325A - EhAb AnD gCd
746A - Compote
318A - Even Odds
550B - Preparing Olympiad
939B - Hamster Farm