arten_1337

Untitled

Aug 24th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int find_median(int arr[], int brr[], int start_a, int end_a, int start_b, int end_b){
  6.  
  7. if(start_a >= end_a || start_b >= end_b)
  8. return 0;
  9. if((end_a - start_a == 1) && (end_b == start_a == 1))
  10. return (max(arr[start_a], brr[start_b]) + min(arr[end_a], brr[end_b]))/2;
  11.  
  12. int ind_m1 = (start_a + end_a)/2;
  13. int ind_m2 = (start_b + end_b + 1)/2;
  14.  
  15. int m1 = arr[ind_m1];
  16. int m2 = brr[ind_m2];
  17.  
  18. if(m1 == m2)
  19. return m1;
  20. if(m1 < m2){
  21. start_a = ind_m1;
  22. end_b = ind_m2;
  23. }
  24. else{
  25. start_b = ind_m2;
  26. end_a = ind_m1;
  27. }
  28.  
  29. return find_median(arr, brr, start_a, end_a, start_b, end_b);
  30. }
  31. int main() {
  32. int n;
  33. cin >> n;
  34. int a[n], b[n];
  35. for(int i = 0; i < n; i++)
  36. cin >> a[i];
  37. for(int i = 0; i < n; i++)
  38. cin >> b[i];
  39. int ans = find_median(a, b, 0, n-1, 0, n-1);
  40. cout << ans << endl;
  41. return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment