fork download
  1. //
  2. // Created by Ngày Được Tự Do on 23/01/2021.
  3. //
  4.  
  5. #include <bits/stdc++.h>
  6. using namespace std;
  7.  
  8. pair<int, int> Picktree(int a[], int n) {
  9. if (n == 0) {
  10. return pair<int, int>{0, 1};
  11. }
  12. if (n == 1) {
  13. return pair<int, int>{a[1], 1};
  14. }
  15. if (!Picktree(a, n - 1).second) {
  16. return pair<int, int>{Picktree(a, n - 1).first + a[n], 1};
  17. } else {
  18. if (Picktree(a, n - 1).first > Picktree(a, n - 2).first + a[n]) {
  19. return pair<int, int>{Picktree(a, n - 1).first, 0};
  20. } else {
  21. return pair<int, int>{Picktree(a, n - 2).first + a[n], 1};
  22. }
  23. }
  24. }
  25.  
  26. int main() {
  27. int n;
  28. cin >> n;
  29. int a[n + 1];
  30. a[0] = 0;
  31. for (int i = 1; i <= n; ++i) {
  32. cin >> a[i];
  33. }
  34. cout << Picktree(a, n).first;
  35. return 0;
  36. }
Success #stdin #stdout 0s 4828KB
stdin
4
1 3 4 3
stdout
6