fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <unordered_map>
  4.  
  5. using namespace std;
  6.  
  7. typedef unordered_map<int, long long> Map;
  8.  
  9. long long cMax(Map *orig, int val)
  10. {
  11. if((*orig).find(val) == (*orig).end())
  12. {
  13. long long sum = cMax(orig, val/2) + cMax(orig, val/3) + cMax(orig, val/4);
  14. (*orig).emplace(val, val < sum ? sum : val);
  15. }
  16.  
  17. return (*orig).find(val)->second;
  18. }
  19.  
  20. int main()
  21. {
  22. int n;
  23. Map first = {{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}, {8, 8}, {9, 9}, {10, 10}, {11, 11}};
  24.  
  25. for(; scanf("%d", &n) != EOF; printf("%d\n", cMax(&first, n)));
  26. }
Success #stdin #stdout 0s 15240KB
stdin
353038063
537580263
673986729
182705106
959680464
538963867
359760460
769845678
649867496
539036536
stdout
1410968370
-2047784223
-1471589867
686968638
-145823721
-2047784223
1446333778
-907894800
-1536879763
-2047784223