水,注意下标从0开始,所以中间是,(m+n-1)/2。
从0开始中间为,中间为(m+n-1)/2
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
#define MAX 10000000+10
long int a[MAX], b[MAX], c[2*MAX];
int cmp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
int main()
{
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int m = 0, n = 0;
scanf("%d", &m);
for (int i = 0; i < m; i++)
scanf("%ld", &a[i]);
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%ld", &b[i]);
int i = 0, j = 0, k = 0;
while (i < m && j < n)
{
if (a[i] == b[j])
{
c[k++] = a[i++];
c[k++] = b[j++];
}
else if (a[i] < b[j])
{
c[k++] = a[i++];
}
else
{
c[k++] = b[j++];
}
}
while (i < m)
c[k++] = a[i++];
while (j < n)
c[k++] = b[j++];
printf("%ld", c[(m+n-1)/2]);
return 0;
}