fork download
  1. INF=10**18
  2.  
  3. def solve():
  4.  
  5. n,k=map(int,input().split())
  6. a=[0]+list(map(int,input().split()))
  7.  
  8. dp=[[-INF]*(k+1)for _ in range(n+1)]
  9. dp[0][0]=0
  10.  
  11. if n>=1:
  12. dp[1][0]=0
  13. if k>=1:dp[1][1]=a[1]
  14. if n>=2:
  15. dp[2][0]=0
  16. if k>=1:dp[2][1]=max(a[1],a[2])
  17. for i in range(3,n+1):
  18. dp[i][0]=0
  19. for j in range(1,k+1):
  20. dp[i][j]=max(a[i]+dp[i-2][j-1],dp[i-1][j])
  21.  
  22. print(dp[n][k])
  23. solve()
Success #stdin #stdout 0.03s 9332KB
stdin
5 2
3 2 7 10 12
stdout
19