您的位置:首页 > 其它

PAT 1029. Median (25)

2014-02-21 21:06 411 查看


1029. Median (25)

开始没注意,sort超时。后来发现给定的是两个排序好的数组,O(N)能过了,注意别越界,听说网上还有O(logN)的算法

mid表示要删除的个数(这里删小的) 9个的时候要删4个,第5个是median。10个的时候要删4个,第5个是median。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;

const int N=1000005;
typedef long long LL;
LL a
,b
;
int main(){
int n,m;
cin>>n;
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
cin>>m;
for(int i=0;i<m;i++)
scanf("%lld",&b[i]);
int mid=(n+m-1)/2,la=0,lb=0;
while(mid--){
if(la==n)
lb++;
else if(lb==m)
la++;
else if(a[la]<b[lb])
la++;
else
lb++;
}
LL ans;
if(la==n)
ans=b[lb];
else if(lb==m)
ans=a[la];
else
ans=min(a[la],b[lb]);
printf("%lld",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: