fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. template <typename T>
  5. void print(T m){
  6. for(auto &it:m)
  7. cout<<it.first<<":"<<it.second<<" ";
  8. cout<<"\n";
  9. }
  10.  
  11. template <typename X>
  12. void print_vec(X m){
  13. for(auto &it:m)
  14. cout<<it<<"\n";
  15. }
  16.  
  17. map<int,int> count_map(vector<int> arr){
  18. map<int,int> m;
  19. for(auto i:arr){
  20. if(m.find(i) == m.end()){
  21. m[i] = 1;
  22. }
  23. else{
  24. m[i] += 1;
  25. }
  26. }
  27. return m;
  28. }
  29.  
  30. template <typename X>
  31. void print_arr(X arr[],int size){
  32. for(int i =0;i<size;i++)
  33. cout<<arr[i]<<" ";
  34. cout<<"\n";
  35. }
  36.  
  37.  
  38. int main() {
  39. // your code goes here
  40. int T;
  41. cin>>T;
  42. for(int count = 0 ;count<T;count++){
  43. long int result_a = -1;
  44. long int result_b = -1;
  45. long int arr[4];
  46. for(int i =0;i<4;i++)
  47. cin>>arr[i];
  48. sort(arr,arr+4);
  49. long int a,b,sum,product,diff,divi;
  50. sum = arr[2];
  51.  
  52. product = arr[3];
  53. if((sum*sum < 4*product)||(int(sqrt(sum*sum - 4*product)) != sqrt(sum*sum - 4*product)))
  54. diff = -999;
  55. else
  56. diff = sqrt(sum*sum - 4*product);
  57.  
  58. a = (sum + diff)/2;
  59. b = (sum - diff)/2;
  60. if((b <= 0)||(a <=0)){
  61. a=-1;
  62. b = -1;
  63. }
  64. divi = a/b;
  65. // cout<<a<<" "<<b<<" "<<diff<<" "<<divi<<" "<<product<<" "<<sum<<"\n";
  66. if(((diff == arr[0]) && (divi == arr[1])) || ((diff == arr[1]) && (divi == arr[0]))){
  67. // cout<<"1"<<"\n";
  68. result_a = a;
  69. result_b = b;
  70. }
  71. if ((((-1 * diff) == arr[0]) && (int(b/a) == arr[1])) || (((-1 * diff) == arr[1]) && (int(b/a) == arr[0]))){
  72. // cout<<"2"<<"\n";
  73. result_a = b;
  74. result_b = a;
  75. }
  76. sum = arr[3];
  77. product = arr[2];
  78. if((sum*sum < 4*product)||(int(sqrt(sum*sum - 4*product)) != sqrt(sum*sum - 4*product)))
  79. diff = -999;
  80. else
  81. diff = sqrt(sum*sum - 4*product);
  82. a = (sum + diff)/2;
  83. b = (sum - diff)/2;
  84. if((b <= 0)||(a <=0)){
  85. a =-1;
  86. b = -1;
  87. }
  88. // cout<<b<<"\n";
  89. divi = int(a/b);
  90. if(((diff == arr[0]) && (divi == arr[1])) || ((diff == arr[1]) && (divi == arr[0]))){
  91. // cout<<"3"<<"\n";
  92. result_a = a;
  93. result_b = b;
  94. }
  95. if( (((-1 * diff) == arr[0]) && (int(b/a) == arr[1])) || (((-1 * diff) == arr[1]) && (int(b/a) == arr[0])) ){
  96. // cout<<"4"<<"\n";
  97. result_a = b;
  98. result_b = a;
  99. }
  100. if(count == T - 1)
  101. cout<<result_a<<" "<<result_b;
  102. else
  103. cout<<result_a<<" "<<result_b<<"\n";
  104. }
  105. return 0;
  106. }
  107.  
Success #stdin #stdout 0.01s 5392KB
stdin
1
800000000 2 60000 20000
stdout
40000 20000