// 1004_Median.cpp : 定义控制台应用程序的入口点。//题目1004:Median//时间限制:1 秒内存限制:32 兆特殊判题:否提交:18367解决:5087//题目描述:// 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.//输入:// 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.//输出:// 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//来源://2011年浙江大学计算机及软件工程研究生机试真题#include "stdafx.h"#include "stdio.h"#define MAX 1000002long int a[MAX];long int b[MAX];int main(){ int i,j,count,median; int n,m; while(scanf("%d",&n)!=EOF) { int k=n; int flag = 0; while(k>0) scanf("%ld",&a[n-(k--)]); scanf("%d",&m); k=m; while(k>0) scanf("%ld",&b[m-(k--)]); i=j=count=0; median=(m+n+1)/2; if(!median) ; else{ do if(a[i]>b[j]) { j++; count++; if(count == median) { PRintf("%ld/n",b[j-1]); break; } if (j == m) { flag = 1; break; } } else { i++; count++; if(count == median) { printf("%ld/n",a[i-1]); break; } if (i == n) { flag = 2; break; } } }while(1); if(flag ==1) { printf("%ld/n",a[i+median-count]); } else if(flag == 2) printf("%ld/n",b[j+median-count]); } } return 0;}