您的位置:首页 > 其它

PAT-A1029. Median (25)

2016-03-05 23:04 323 查看
水,注意下标从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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: