fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int getNextTerm(int n)
  7. {
  8. if(n%2 == 0) return n/2;
  9. else return 3*n+1;
  10. }
  11.  
  12. int getLength(int n)
  13. {
  14. static vector<int>cache(1000000, 0); cache[1] = 1;
  15.  
  16. if(n >= 1000000) return getLength(getNextTerm(n))+1;
  17.  
  18. if(cache[n] == 0) cache[n] = getLength(getNextTerm(n))+1;
  19. return cache[n];
  20. }
  21.  
  22. int main()
  23. {
  24. vector<vector<int>> results(1000000, vector<int>(1000000, 0));
  25. for(int i = 1; i < 1000000; i++) results[i][i] = getLength(i);
  26. for(int i = 1; i < 1000000; i++) for(int j = i+1; j < 1000000; j++) {
  27. results[i][j] = results[j][i] = max(getLength(j), results[i][j-1]);
  28. }
  29.  
  30. int i, j; while(cin >> i >> j) {
  31. cout << i << ' ' << j << ' ' << results[i][j] << '\n';
  32. }
  33. return 0;
  34. }
Time limit exceeded #stdin #stdout 5s 8388607KB
stdin
1 10
100 200
201 210
900 1000
stdout
Standard output is empty