import sys
input = sys.stdin.readline
N, K = map(int, input().split())
A = list(map(int, input().split()))
dp = [[0] * 2 for _ in range(2)]
def solve_opt(lambd):
dp[0][0] = (0, 0)
dp[0][1] = (A[0] - lambd, -1)
for i in range(1, N):
dp[1][0] = max(dp[0][0], dp[0][1])
opt1 = (dp[0][0][0] - lambd, dp[0][0][1] - 1)
opt = max(opt1, dp[0][1])
dp[0][1] = (opt[0] + A[i], opt[1])
dp[0][0] = dp[1][0]
return max(dp[0][0], dp[0][1])
lo = 0
hi = int(3e14)
while lo < hi:
mid = (lo + hi) // 2
res = solve_opt(mid)
used = -res[1]
if used > K:
lo = mid+1
else:
hi = mid
res = solve_opt(lo)
print(res[0] + K * lo)
Compilation message (stdout)
Compiling 'feast.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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |