首页 > 其他 > 详细

二分搜索

时间:2016-05-03 23:35:20      阅读:241      评论:0      收藏:0      [点我收藏+]
// CodeForces 600B
//二分搜索 时间复杂度为O(log n)
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #include<math.h> #include<algorithm> using namespace std; #define N 200100 #define INF 0x3f3f3f3f int a[N], b[N]; int main() { int n, m; scanf("%d%d", &n, &m); for(int i=0; i<n; i++) scanf("%d", &a[i]); for(int i=0; i<m; i++) scanf("%d", &b[i]); sort(a, a+n); for(int i=0; i<m; i++) { int left, right, mid=-1; left=0, right=n-1; while(left<=right) { mid=(left+right)/2; if(a[mid]>b[i]) { if(a[mid-1] <= b[i]) break; right=mid-1; } else if(a[mid]<=b[i]) { if(mid == n-1) { mid ++;break; } left=mid+1; } } printf("%d%c", mid, i==m-1 ? \n : ); } return 0; }

 

二分搜索

原文:http://www.cnblogs.com/9968jie/p/5456722.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!