from sys import stdout, setrecursionlimit
from math import ceil, floor, sqrt
def ceil(a: int, b: int):
return (a + b - 1)//b
n, m = map(int, input().split(" "))
a = list(map(int, input().split(" ")))
b = list(map(int, input().split(" ")))
enum = list(range(n))
enum = sorted(enum, key = lambda i: (-max(a[i], b[i], -min(a[i], b[i]))))
def is_possible(x: int):
extra = 0
for i in enum:
if b[i] >= a[i]: p = b[i]
else: p = a[i]
op = ceil(x, p)
if op <= m:
extra += (m - op)
continue
needed = min(x - m * p, extra * b[i])
op = ceil((x-needed), p)
if op > m: return False
extra -= ceil(needed, b[i])
return True
l, r = 0, int(1e24)
while r-l>1:
mid = (l+r)//2
if is_possible(mid): l = mid
else: r = mid
print(l)
컴파일 시 표준 출력 (stdout) 메시지
Compiling 'Main.py'...
=======
adding: __main__.pyc (deflated 38%)
=======
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |