제출 #1344747

#제출 시각아이디문제언어결과실행 시간메모리
1344747hetingen69420Feast (NOI19_feast)Pypy 3
41 / 100
261 ms327680 KiB
N, K = map(int, input().split())
nums = list(map(int, input().split()))


def solve_lambda(penalty):
    dp = [[0, 0] for _ in range(N)]
    count = [[0, 0] for _ in range(N)]

    dp[0][1] = nums[0] - penalty
    count[0][1] = 1

    for i in range(1, N):
        (dp[i][0], count[i][0]) = max(
            (dp[i - 1][0], count[i - 1][0]),
            (dp[i - 1][1], count[i - 1][1]),
        )

        (dp[i][1], count[i][1]) = max(
            (dp[i - 1][0] + nums[i] - penalty, count[i - 1][0] + 1),
            (dp[i - 1][1] + nums[i], count[i - 1][1])
        )

    return max(
        (dp[N - 1][0], count[N - 1][0]),
        (dp[N - 1][1], count[N - 1][1])
    )


lo = 0
hi = sum(map(abs, nums)) + 1

for _ in range(60):
    mid = (lo + hi) / 2
    penalised, count = solve_lambda(mid)
    if count >= K:
        lo = mid
    else:
        hi = mid


penalised, count = solve_lambda(hi)
print(int(round(penalised + K * hi)))

컴파일 시 표준 출력 (stdout) 메시지

Compiling 'feast.py'...

=======
  adding: __main__.pyc (deflated 49%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...