13
#include <stdio.h>#include <stdlib.h>#include <math.h>//const int SIZE=1000000;int main(){ //直接开1000000的数组程序停止工作 只好动态创建 或者声明为全局数组 不放在主函数内 //long int a[SIZE],b[SIZE]; int aNum,bNum,i,j,sum,index; long int *a,*b,Median; while(scanf("%d",&aNum)!=EOF) { a=(long int*)malloc(aNum*sizeof(long int)); for(i=0; i<aNum; i++) scanf("%ld",&a[i]); scanf("%d",&bNum); b=(long int*)malloc(bNum*sizeof(long int)); for(i=0; i<bNum; i++) scanf("%ld",&b[i]); sum=aNum+bNum; if(sum&1)//是奇数 index=(sum+1)/2;//向上取整 else index=sum/2; i=0,j=0; int count=0; Median=0; while(count<index && i<aNum && j<bNum) { if(a[i]<=b[j]) { Median=a[i]; i++; } else { Median=b[j]; j++; } count++; } //printf("%d %d",count,index); while(count<index && i<aNum) { Median=a[i++]; count++; } while(count<index && j<bNum) { Median=b[j++]; count++; } printf("%ld\n",Median); free(a); free(b); } return 0;} /************************************************************** Problem: 1004 User: windzhu Language: C++ Result: Accepted Time:10 ms Memory:1012 kb****************************************************************/