-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsum_of_middle_elements.c
More file actions
71 lines (51 loc) · 1.39 KB
/
sum_of_middle_elements.c
File metadata and controls
71 lines (51 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Sum of middle elements of two sorted array - GeeksForGeeks
Problem Link: https://practice.geeksforgeeks.org/problems/sum-of-middle-elements-of-two-sorted-arrays/0/
Author: Shyam Kumar
*/
#include <stdio.h>
#include <stdlib.h>
void merge( int *arr1, int *arr2, int *arr, int N ) {
int i = 0, j = 0, k = 0;
/* Comparing and storing until one of the two array is complete */
while( i < N && j < N ) {
if( arr1[i] < arr2[j] )
arr[k++] = arr1[i++];
else
arr[k++] = arr2[j++];
}
// arr1 is complete
if( i == N )
while(j < N)
arr[k++] = arr2[j++];
else // arr2 is complete
while(i < N)
arr[k++] = arr1[i++];
}
int sum_of_middle_elements(int *arr1, int *arr2, int N) {
int *arr;
arr = (int*)malloc(sizeof(int)*(2*N));
merge(arr1, arr2, arr, N);
// Adding the N/2th element and (N/2+1)th element of the final array
int sum = arr[N-1] + arr[N];
return sum;
}
void input_array(int *arr, int N) {
int i;
for(i=0; i < N; i++)
scanf("%d",&arr[i]);
}
int main() {
int t, N, ans;
scanf("%d",&t);
while(t > 0) {
scanf("%d",&N);
int arr1[N], arr2[N];
input_array(arr1, N);
input_array(arr2, N);
ans = sum_of_middle_elements(arr1,arr2, N);
printf("%d\n",ans);
t--;
}
return 0;
}