213862026-01-12 22:49:49algoproBányász RPG (40 pont)pypy3Runtime error 36/40142ms32000 KiB
# UUID: 168acd5c-d2dd-46d7-af4d-f48005f304a1
def solvx():
    N = int(input())
    A = [int(x) for x in input().split()]
    B = [int(x) for x in input().split()]

    idx = list(range(N))
    idx.sort(key=lambda i: A[i])

    prefix = [0]*(N+1)
    for j in range(N):
        prefix[j+1] = prefix[j] + B[idx[j]]

    ketpercesek = 0

    for pos in range(N-1, -1, -1):
        i = idx[pos]
        if A[i] > ketpercesek + prefix[pos]:
            if ketpercesek + prefix[pos] + B[i] > A[i]:
                ketpercesek += A[i] - (ketpercesek + prefix[pos])
            else:
                ketpercesek += B[i]

    print(ketpercesek + prefix[N])

def solv():
    N = int(input())
    prefix = [int(x) for x in input().split()] + [0]
    V = [(prefix[i],int(x)) for i,x in enumerate(input().split())]

    V.sort()

    prefix[0] = 0
    prefix[1] = V[0][1]
    for i in range(1, N):
        prefix[i + 1] = prefix[i] + V[i][1]

    ketpercesek = 0

    for i in range(N - 1, -1, -1):
        if V[i][0] > ketpercesek + prefix[i]:
            if ketpercesek + prefix[i] + V[i][1] > V[i][0]:
                ketpercesek += V[i][0] - (ketpercesek + prefix[i])
            else:
                ketpercesek += V[i][1]

    print(ketpercesek + prefix[N])


solvx()
SubtaskSumTestVerdictTimeMemory
base36/40
1Accepted0/041ms19876 KiB
2Accepted0/079ms22792 KiB
3Accepted2/245ms19724 KiB
4Accepted2/250ms21108 KiB
5Accepted2/257ms22756 KiB
6Accepted2/264ms25816 KiB
7Accepted2/252ms21736 KiB
8Accepted2/261ms22248 KiB
9Accepted3/339ms19616 KiB
10Accepted3/339ms19684 KiB
11Accepted3/346ms19696 KiB
12Accepted3/343ms21160 KiB
13Accepted4/443ms21112 KiB
14Accepted4/450ms21200 KiB
15Accepted2/2134ms28472 KiB
16Runtime error0/279ms32000 KiB
17Accepted2/2142ms30948 KiB
18Runtime error0/271ms32000 KiB