fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long int
  4. #define double long double
  5. inline int power(int a, int b) {
  6. int x = 1;
  7. while (b) {
  8. if (b & 1) x *= a;
  9. a *= a;
  10. b >>= 1;
  11. }
  12. return x;
  13. }
  14.  
  15.  
  16. const int M = 1000000007;
  17. const int N = 3e5+9;
  18. const int INF = 2e9+1;
  19. const int LINF = 2000000000000000001;
  20.  
  21. //_ ***************************** START Below *******************************
  22.  
  23.  
  24.  
  25. vector<vector<int>> a;
  26.  
  27.  
  28. int count(int m, int mid ){
  29. int ct = 0;
  30. for(int i=0; i<m; i++){
  31. int j = upper_bound(begin(a[i]), end(a[i]), mid) - begin(a[i]);
  32. ct += j;
  33. }
  34. return ct;
  35. }
  36.  
  37.  
  38.  
  39. //* Median of matrix sorted row wise
  40.  
  41. void consistency1(int m, int n) {
  42.  
  43. int k = m*n/2;
  44.  
  45. int s = 1, e = 1e9;
  46.  
  47. int ans = INT32_MAX;
  48. while(s<=e){
  49. int mid = s + (e-s)/2;
  50.  
  51. int ct = count(m, mid);
  52. if(ct > k ){
  53. ans = min(ans, mid);
  54. e = mid-1;
  55. }
  56. else{
  57. s = mid+1;
  58. }
  59. }
  60.  
  61. cout << ans << " ";
  62.  
  63. }
  64.  
  65.  
  66.  
  67. //* Median of matrix (sorted row wise)
  68.  
  69. //* Lock BS
  70. //* [ 2 2 2 3 3 4 4 4 ]
  71. //* F F F T T T T T
  72.  
  73.  
  74. void consistency2(int m, int n) {
  75.  
  76. int k = m*n/2;
  77.  
  78. int s = 1, e = 1e9;
  79.  
  80. while(s<e){
  81. int mid = s + (e-s)/2;
  82.  
  83. if(count(m, mid) > k ){
  84. e = mid;
  85. }
  86. else{
  87. s = mid+1;
  88. }
  89. }
  90.  
  91. cout << s << " ";
  92.  
  93. }
  94.  
  95.  
  96. void solve() {
  97.  
  98. int m, n;
  99. cin >> m >> n;
  100.  
  101. a.resize(m, vector<int>(n));
  102.  
  103. for(int i=0; i<m; i++)
  104. for(int j=0; j<n; j++) cin >> a[i][j];
  105.  
  106.  
  107. consistency1(m, n);
  108. consistency2(m, n);
  109. cout << endl;
  110.  
  111. }
  112.  
  113.  
  114.  
  115.  
  116.  
  117. int32_t main() {
  118. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  119.  
  120. int t = 1;
  121. // cin >> t;
  122. while (t--) {
  123. solve();
  124. }
  125.  
  126. return 0;
  127. }
Success #stdin #stdout 0s 5320KB
stdin
3 3
2 4 9
3 7 8
4 7 10
stdout
7 7