62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
class Sequence:
|
|
def __init__(self):
|
|
self.sequence = [0]
|
|
self.current_idx = 0
|
|
|
|
def add_left(self, value):
|
|
self.sequence.insert(self.current_idx, value)
|
|
|
|
def add_right(self, value):
|
|
self.sequence.insert(self.current_idx + 1, value)
|
|
self.current_idx += 1
|
|
|
|
|
|
def task3() -> None:
|
|
N = int(input())
|
|
S = input()
|
|
|
|
seq = Sequence()
|
|
|
|
for i in range(1, N + 1):
|
|
ch = S[i - 1]
|
|
|
|
if ch == "L":
|
|
seq.add_left(i)
|
|
elif ch == "R":
|
|
seq.add_right(i)
|
|
|
|
print(" ".join(map(str, seq.sequence)))
|
|
|
|
|
|
def task4() -> None:
|
|
n, k = map(int, input().split())
|
|
a = list(map(int, input().split()))
|
|
|
|
dp = [[float("-inf")] * (k + 1) for _ in range(n + 1)]
|
|
dp[0][0] = 0
|
|
|
|
max_prev = [float("-inf")] * (k + 1)
|
|
max_prev[0] = 0
|
|
|
|
for i in range(1, n + 1):
|
|
for j in range(k + 1):
|
|
if i - 1 >= 0:
|
|
dp[i][j] = max(dp[i][j], dp[i - 1][j] + a[i - 1])
|
|
if i - 2 >= 0:
|
|
dp[i][j] = max(dp[i][j], dp[i - 2][j] + a[i - 1])
|
|
if j > 0:
|
|
dp[i][j] = max(dp[i][j], max_prev[j - 1])
|
|
|
|
for j in range(k + 1):
|
|
max_prev[j] = max(max_prev[j], dp[i][j])
|
|
|
|
print(max(dp[n]))
|
|
|
|
|
|
def main() -> None:
|
|
task4()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|