1,当队列长度n为偶数是,median是第n/2个数,当n为基数是,是第n/2+1个数
2,当数据比较大是,讲cin,cout换位scanf和printf后,运行速度能提升到大约为原来的1/3。用cin,cout是有两个用例超时
#include <iostream>
#include <stdio.h>
using namespace std;
long first[1000005];
int main()
{
freopen("E:/data/1029.txt","r",stdin);
int n1,n2;
scanf("%d",&n1);
for(int i=0;i<n1;i++)
scanf("%ld",&first[i]);
scanf("%d",&n2);
int mid=(n1+n2)%2==0?(n1+n2)/2:(n1+n2)/2+1;
long median=0,temp=0;
int p1=0,p2=0;
scanf("%ld",&temp);
while(p1<n1 && p2<n2)
{
if(first[p1]<=temp)
{
median=first[p1];
p1++;
}
else
{
median=temp;
p2++;
scanf("%ld",&temp);
}
if(p1+p2==mid)
{
printf("%ld\n",median);
return 0;
}
}
while(p1<n1)
{
median=first[p1];
p1++;
if(p1+p2==mid)
{
printf("%ld\n",median);
return 0;
}
}
while(p2<n2)
{
median=temp;
p2++;
scanf("%ld",&temp);
if(p1+p2==mid)
{
printf("%ld\n",median);
return 0;
}
}
return 0;
}