1029 Median (25 分)

真是是一道很搞人的题
1.数据能从1开始的,好确定中间位置
2.第一个数组离线,第二个数组在线处理

#include<cstdio>
const int maxn = 2e5+10;
const int INF = 0x7fffffff;
int a[maxn];

int main(){
	int n,m,num;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d", &a[i]);
	}
	scanf("%d",&m);
	a[n+1] = INF;
	int mid = (m+n+1)>>1;
	int cnt = 0,j=1;
	for(int i=0;i<m;i++){
		scanf("%d",&num);
		while(num > a[j]){
			cnt++;
			if(cnt == mid) printf("%d",a[j]);
			j++;
		}
		cnt++;
		if(cnt == mid) printf("%d",num);
	}	
	
	while(j <= n){
		cnt++;
		if(cnt == mid) {
			printf("%d",a[j]);
			break;
		}
		j++;
	}
	return 0;
}
全部评论

相关推荐

06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务