PTA 7-3 两个有序序列的中位数 (25 分)

    xiaoxiao2022-06-24  182

    已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数)。

    输入格式:

    输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。

    输出格式:

    在一行中输出两个输入序列的并集序列的中位数。

    输入样例1:

    5 1 3 5 7 9 2 3 4 5 6

    输出样例1:

    4

    输入样例2:

    6 -100 -10 1 1 1 1 -50 0 2 3 4 5

    输出样例2:

    1 #include <stdio.h> #define LIST_SIZE 100000 int S1[LIST_SIZE],S2[LIST_SIZE]; //直接求索引 int Dealwith(n) { int i = 0,j = 0; int m = (2*n-1)/2; while(i + j < m) { if(S1[i] >= S2[j]) { j++; } else i++; } return S1[i]>S2[j]?S2[j]:S1[i]; } int main() { int n; scanf("%d",&n); int i; for(i = 0;i < n;i++) { scanf("%d",&S1[i]); } for(i = 0;i < n;i++) { scanf("%d",&S2[i]); } printf("%d\n",Dealwith(n)); return 0; }

     


    最新回复(0)