fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void solve() {
  5. int n, m, a, b, r = 0; cin >> n >> m >> a >> b;
  6. int i = 1;
  7. while(!(n==1 && m==1)){
  8. int multi1 = 0, multi2 = 0;
  9. if(n>1){
  10. if(a>(n+1)/2) multi1 = (a-1)*m;
  11. else if(a==(n+1)/2) multi1 = n/2*m;
  12. else multi1 = (n-a)*m;
  13. }
  14. if(m>1){
  15. if(b>(m+1)/2) multi2 = (b-1)*n;
  16. else if(b==(m+1)/2) multi2 = m/2*n;
  17. else multi2 = (m-b)*n;
  18. }
  19.  
  20. //cout << i++ << ": n: " << n << " m: " << m << " a: " << a << " b: " << b << endl;
  21. //cout << "multi1: " << multi1 << " multi2: " << multi2 << endl;
  22.  
  23. if(multi1 >= multi2){
  24. if(a>(n+1)/2) n = n - a + 1;
  25. else if(a==(n+1)/2) n = (n+1)/2;
  26. else n = a;
  27. a = (n+1)/2;
  28. }else{
  29. if(b>(m+1)/2) m = m - b + 1;
  30. else if(b==(m+1)/2) m = (m+1)/2;
  31. else m = b;
  32. b = (m+1)/2;
  33. }
  34. r++;
  35. }
  36. cout << r << endl;
  37. }
  38.  
  39. int main() {
  40. ios_base::sync_with_stdio(false);
  41. cin.tie(NULL);
  42. int t; cin >> t;
  43. while(t--) solve();
  44. }
  45.  
Success #stdin #stdout 0s 5308KB
stdin
8
2 2 1 1
3 3 2 2
2 7 1 4
2 7 2 2
8 9 4 6
9 9 5 5
2 20 2 11
22 99 20 70
stdout
2
4
4
3
6
8
6
9