fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int t;
  6. cin >> t;
  7.  
  8. while (t--) {
  9. long long a, b;
  10. cin >> a >> b;
  11.  
  12. int ans = 0;
  13.  
  14. // White
  15. {
  16. long long white = a, dark = b;
  17. long long sz = 1;
  18. bool isWhite = true;
  19. int layers = 0;
  20.  
  21. while (true) {
  22. if (isWhite) {
  23. if (white < sz) break;
  24. white -= sz;
  25. } else {
  26. if (dark < sz) break;
  27. dark -= sz;
  28. }
  29. layers++;
  30. sz *= 2;
  31. isWhite = !isWhite;
  32. }
  33. ans = max(ans, layers);
  34. }
  35.  
  36. // Black
  37. {
  38. long long white = a, dark = b;
  39. long long sz = 1;
  40. bool isWhite = false;
  41. int layers = 0;
  42.  
  43. while (true) {
  44. if (isWhite) {
  45. if (white < sz) break;
  46. white -= sz;
  47. } else {
  48. if (dark < sz) break;
  49. dark -= sz;
  50. }
  51. layers++;
  52. sz *= 2;
  53. isWhite = !isWhite;
  54. }
  55. ans = max(ans, layers);
  56. }
  57.  
  58. cout << ans << "\n";
  59. } return 0;
  60. }
Success #stdin #stdout 0.01s 5288KB
stdin
7
1 1
1 2
3 1
4 3
5 2
1000000 1000000
1000000 1
stdout
1
2
2
2
3
20
2