题目1004:Median

来源:互联网 发布:羊绒背心怎么样 知乎 编辑:程序博客网 时间:2024/05/16 07:36

简单题,  基本的2-mergesort,空间复杂度大,没有优化可以水过。


#include<stdio.h>
long a[1000001],b[1000001],c[2000002];
void _sort(long a[],int n1,long b[],int n2,long c[])
{
    int i=0,j=0,k=0;
    for(;i<n1&&j<n2;){
        if(a[i] < b[j]) c[k++] = a[i++];
        else if(a[i] == b[j]){
            c[k++] = a[i++]; c[k++] = b[j++];
        }
        else c[k++] = b[j++];
    }
    for(;i<n1;) c[k++] = a[i++];
    for(;j<n2;) c[k++] = b[j++];
}
int main()
{
    //freopen("in","r",stdin);
    long n1,n2;
    while(scanf("%ld",&n1)!=EOF){
        int i;
        for(i=0;i<n1;i++) scanf("%ld",&a[i]);
        scanf("%ld",&n2);
        for(i=0;i<n2;i++) scanf("%ld",&b[i]);
        _sort(a,n1,b,n2,c);
        printf("%ld\n",c[(n1+n2-1)/2]);
    }
    return 0;
}