SHAOXIAOJ正在加载中...

1141: Median(已翻译)

金币值:2 定数:1 时间限制:1.000 s 内存限制:32 M
正确:2 提交:2 正确率:100.00% 命题人:

题目描述

    Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 17} is 15. The median of two sequences is defined to be the median of the non-decreasing sequence which contains all the elements of both sequences. For example, the median of S1 and S2 is 13.

    Given two increasing sequences of integers, you are asked to find their median.

    给定一个由N个整数组成的递增序列S,它的中位数是位于中间位置的数字。例如,S1={11,12,13,14}的中位数是12,S2={9,10,15,16,17}的中位数是15。定义两个序列的中位数为包含两个序列的所有元素的非递减序列的中位数。例如,S1和S2的中位数是13。

输入格式

    Each input file may contain more than one test case.

    Each case occupies 2 lines, each gives the information of a sequence. For each sequence, the first positive integer N (≤1000000) is the size of that sequence. Then N integers follow, separated by a space.
    It is guaranteed that all the integers are in the range of long int.

    每个输入文件可能包含一个以上的测试用例。

    每个case占用2行,每个case给出一个序列的信息。对于每个序列,第一个正整数N(≤1000000)是该序列的大小。然后是N个整数,以空格分隔。
    保证所有的整数都在long int的范围内。


输出格式

    For each test case you should output the median of the two given sequences in a line.

    对于每个测试用例,您应该在一行中输出两个给定序列的中位数。

输入样例    复制

4 11 12 13 14
5 9 10 15 16 17

输出样例    复制

13

提示

本题需要解决的问题是给定两个有序序列,求出这两个序列合并在一起以后中间的那个值。由于两个序列都是有序的,自然我们会想到归并排序的归并过程。于是问题迎刃而解了。

解题步骤:

1)读入两个有序序列的值;

2)计算中间值得位置;

3)定位中间值;

4)输出结果。

需要注意的是两个序列的元素都非常多。因而可以考虑用全局变量来存储:定义在函数中的局部变量存储在系统的栈当中,全局变量或静态变量则存储在堆当中。栈的存取比堆快,但栈的空间少于堆。