求给定两个非递减序列的中位数。
#include <stdio.h>
int main()
{
int a[1000000];
int b[1000000];
int res;
int n,m;
int i,j,med,cn;
int find;
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(j=0;j<m;j++)
scanf("%d",&b[j]);
med = (n+m+1)/2;
i = j = 0;
find = 0;
cn = 0;
while(i< n && j < m)
{
if(a[i] <= b[j])
{
cn++;
if(cn == med)
{
find = 1;
res = a[i];
break;
}
i++;
}
else
{
cn++;
if(cn == med)
{
find = 1;
res = b[j];
break;
}
j++;
}
}
while(find == 0 && i < n && j >= m)
{
cn++;
if(cn == med)
{
find = 1;
res = a[i];
break;
}
i++;
}
while(find == 0 && i >= n && j < m)
{
cn++;
if(cn == med)
{
find = 1;
res = b[j];
break;
}
j++;
}
printf("%d\n",res);
}
return 0;
}
/**************************************************************
Problem: 1004
User:
Language: C
Result: Accepted
Time:0 ms
Memory:8652 kb
****************************************************************/