fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. double findMedian(const vector<int> &A,const vector<int> &B, int imin, int imax){
  5. int i = (imin+imax)/2;
  6. int j = (A.size()+B.size())/2 - i;
  7. // if(!i) i = 1;
  8. // if(!j) j = 1;
  9. // cout << "imin: " << imin << " imax: " << imax << " i: " << i << " j: " << j << endl;
  10. if (i>0 && j < B.size() && A[i-1] > B[j]) imax = i-1;
  11. else if(j>0 && i < A.size() && B[j-1] > A[i]) imin = i+1;
  12. else{
  13. // cout << "entered" << endl;
  14. if((A.size()+B.size())%2){
  15. if (i < A.size() && j < B.size()) return min(A[i],B[j]);
  16. else if (i < A.size()) return A[i];
  17. else return B[j];
  18. }
  19. else{
  20. int median = 0;
  21. if (i-1 >= 0 && j-1 >= 0) median += max(A[i-1],B[j-1]);
  22. else if (i-1 < 0) median += B[j-1];
  23. else median += A[i-1];
  24. if (i < A.size() && j < B.size()) median += min(A[i],B[j]);
  25. else if (i < A.size()) median += A[i];
  26. else median += B[j];
  27. return (double) median/2;
  28. }
  29. }
  30. return findMedian(A,B,imin,imax);
  31. }
  32.  
  33. double Solution::findMedianSortedArrays(const vector<int> &A, const vector<int> &B) {
  34. // Do not write main() function.
  35. // Do not read input, instead use the arguments to the function.
  36. // Do not print the output, instead return values as specified
  37. // Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
  38. // if(A[0] >= B[B.size()-1]){
  39. // if( (A.size() + B.size())%2){
  40. // if(A.size() > B.size()) return A[(A.size()-B.size())/2];
  41. // else if(A.size() < B.size()) return B[(B.size()+A.size())/2];
  42. // else return ((double)A[A.size()-1]+B[B.size()-1])/2;
  43. // }
  44. // else{
  45. // if(A.size() > B.size()) return ((double)A[(A.size()-B.size())/2]+A[(A.size()-B.size()-1)/2])/2;
  46. // else if(A.size() < B.size()) return ((double)B[(B.size()+A.size())/2]+ B[(B.size()+A.size()-1)/2])/2;
  47. // else return ((double)A[A.size()-1]+B[B.size()-1])/2;
  48. // }
  49.  
  50. // }
  51. // else if(B[0] >= A[A.size()-1]){
  52. // if( (A.size() + B.size())%2){
  53. // if(A.size() > B.size()) return A[(A.size()+B.size())/2];
  54. // else if(A.size() < B.size()) return B[(B.size()-A.size())/2];
  55. // else return ((double)A[A.size()-1]+B[B.size()-1])/2;
  56. // }
  57. // else{
  58. // if(A.size() > B.size()) return ((double)A[(A.size()+B.size())/2]+A[(A.size()+B.size()-1)/2])/2;
  59. // else if(A.size() < B.size()) return ((double)B[(B.size()-A.size())/2]+ B[(B.size()-A.size()-1)/2])/2;
  60. // else return ((double)A[A.size()-1]+B[B.size()-1])/2;
  61. // }
  62. // }
  63. // int first = A.size()/2;
  64. // int second = B.size()/2;
  65. if(A.size() && B.size()){
  66. return findMedian(A,B,max((long) 0,(long) (A.size()-B.size())/2),min((long) A.size(), (long) (A.size()+B.size())/2));
  67. }
  68. else if(A.size()){
  69. if(A.size()%2){
  70. return A[A.size()/2];
  71. }
  72. else{
  73. return ((double)A[A.size()/2] + A[A.size()/2 - 1])/2;
  74. }
  75. }
  76. else{
  77. if(B.size()%2){
  78. return B[B.size()/2];
  79. }
  80. else{
  81. return ((double)B[B.size()/2]+B[B.size()/2 - 1])/2;
  82. }
  83. }
  84. }
  85.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:4:25: error: ‘vector’ does not name a type; did you mean ‘perror’?
 double findMedian(const vector<int> &A,const vector<int> &B, int imin, int imax){
                         ^~~~~~
                         perror
prog.cpp:4:31: error: expected ‘,’ or ‘...’ before ‘<’ token
 double findMedian(const vector<int> &A,const vector<int> &B, int imin, int imax){
                               ^
prog.cpp: In function ‘double findMedian(int)’:
prog.cpp:5:14: error: ‘imin’ was not declared in this scope
     int i = (imin+imax)/2;
              ^~~~
prog.cpp:5:19: error: ‘imax’ was not declared in this scope
     int i = (imin+imax)/2;
                   ^~~~
prog.cpp:5:19: note: suggested alternative: ‘timex’
     int i = (imin+imax)/2;
                   ^~~~
                   timex
prog.cpp:6:14: error: ‘A’ was not declared in this scope
     int j = (A.size()+B.size())/2 - i;
              ^
prog.cpp:6:23: error: ‘B’ was not declared in this scope
     int j = (A.size()+B.size())/2 - i;
                       ^
prog.cpp: At global scope:
prog.cpp:33:8: error: ‘Solution’ has not been declared
 double Solution::findMedianSortedArrays(const vector<int> &A, const vector<int> &B) {
        ^~~~~~~~
prog.cpp:33:47: error: ‘vector’ does not name a type; did you mean ‘perror’?
 double Solution::findMedianSortedArrays(const vector<int> &A, const vector<int> &B) {
                                               ^~~~~~
                                               perror
prog.cpp:33:53: error: expected ‘,’ or ‘...’ before ‘<’ token
 double Solution::findMedianSortedArrays(const vector<int> &A, const vector<int> &B) {
                                                     ^
prog.cpp: In function ‘double findMedianSortedArrays(int)’:
prog.cpp:65:8: error: ‘A’ was not declared in this scope
     if(A.size() && B.size()){
        ^
prog.cpp:65:20: error: ‘B’ was not declared in this scope
     if(A.size() && B.size()){
                    ^
stdout
Standard output is empty