Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.42 KB | None | 0 0
  1. #input
  2. n = int(input())
  3. a = list(map(int, input().split()))
  4.  
  5. #counting maximum profit
  6. dp = [0] * n
  7. dp[0] = a[0]
  8. dp[2] = dp[0] + a[2]
  9.  
  10. for i in range(3, n):
  11.     dp[i] = max(dp[i - 2], dp[i - 3]) + a[i]
  12. print(dp[n - 1])
  13.  
  14. #restoring the answer
  15. i = n - 1
  16. ans = []
  17. while i > 0:
  18.     ans.append(i)
  19.     tmp = dp[i] - a[i]
  20.     if tmp == dp[i - 2]:
  21.         i -= 2
  22.     else:
  23.         i -= 3
  24. print(*((ans + [0])[::-1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement