fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. long int solve(long int n, long int dp[]) {
  6. if(n<=1)
  7. return n;
  8.  
  9. if(dp[n]!=0)
  10. return dp[n];
  11.  
  12. long int ans = max(n, solve(n/2, dp)+solve(n/3, dp) + solve(n/4, dp));
  13.  
  14. return dp[n] = ans;
  15. }
  16.  
  17. int main() {
  18.  
  19. long int n;
  20. cin >> n;
  21.  
  22. long int dp[n+1] = {0};
  23.  
  24. // map<int, int> mp(n);
  25.  
  26. cout << solve(n, dp) << endl;
  27. return 0;
  28. }
Success #stdin #stdout 0s 4376KB
stdin
12
stdout
13