Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int find_median(int arr[], int brr[], int start_a, int end_a, int start_b, int end_b){
- if(start_a >= end_a || start_b >= end_b)
- return 0;
- if((end_a - start_a == 1) && (end_b == start_a == 1))
- return (max(arr[start_a], brr[start_b]) + min(arr[end_a], brr[end_b]))/2;
- int ind_m1 = (start_a + end_a)/2;
- int ind_m2 = (start_b + end_b + 1)/2;
- int m1 = arr[ind_m1];
- int m2 = brr[ind_m2];
- if(m1 == m2)
- return m1;
- if(m1 < m2){
- start_a = ind_m1;
- end_b = ind_m2;
- }
- else{
- start_b = ind_m2;
- end_a = ind_m1;
- }
- return find_median(arr, brr, start_a, end_a, start_b, end_b);
- }
- int main() {
- int n;
- cin >> n;
- int a[n], b[n];
- for(int i = 0; i < n; i++)
- cin >> a[i];
- for(int i = 0; i < n; i++)
- cin >> b[i];
- int ans = find_median(a, b, 0, n-1, 0, n-1);
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment