已知有两个非降序序列S1, S2, 求S1与S2归并成一个序列的低位中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。 输入格式:
输入分4行。第一行给出第一个序列的长度N1(0 输出格式:
在一行中输出两个输入序列的并集序列的低位中位数。 输入样例:2
在这里给出一组输入。例如:
3 1 2 3 5 4 5 6 7 8
输出样例:
在这里给出相应的输出。例如:
4
#include int main(void){ int n1; scanf("%d",&n1); if(1){ int *a =(int*)malloc(sizeof(int)*(n1)); int i; int n2; for(i = 0;i < n1;i++){ scanf("%d",&a[i]); } scanf("%d",&n2); if(1){ int *b =(int*)malloc(sizeof(int)*(n2)); int j, k, l; for(i = 0;i < n2;i++){ scanf("%d",&b[i]); } i = 0; j = 0; k = 0; while(k < (n1 + n2 +1)/2){ if(((a[i] > b[j])&&(j < n2))||(i == n1)){ j++; l = 2; } else{ i++; l = 1; } k++; } if(l == 1){ printf("%d",a[i-1]); } else{ printf("%d",b[j-1]); } return 0; } } }