采购礼品二分查找

阅读: 评论:0

采购礼品二分查找

采购礼品二分查找

题目背景

编程俱乐部为了准备开学的社团活动,需要采购活动物品,mxj联系某条街上的n个人,该条街长度为L,一共有m家店。

题目描述

现在这n个人想知道距离自己最近的店距离是多少,请你求出来。

输入格式:

第一行,两个空格隔开的正整数,L, m, 题意如上。
接下来m行,每行一个正整数,表示店铺位置。
第m+1行,一个正整数n,代表人数。
接下来n行,每行一个正整数,代表第i个人所处的位置Pi。

输出格式:

输出n行,代表每个人距离自己最近店的路程。

输入样例#1:

3 1
1
3
1
2
3

输出样例#1:

0
1
2

说明

1≤L≤109
1≤m≤105
1≤n≤105
且m≤n。

代码+题解
#include<stdio.h>
#include<algorithm>
using namespace std;
int L,m,n,a,b,P;
int arr[100005];
int main()
{scanf("%d%d",&L,&m);for(int i=1; i<=m; i++){scanf("%d",&arr[i]);}sort(arr+1,arr+m+1);scanf("%d",&n);for(int i=1; i<=n; i++){int mid=1;scanf("%d",&P);int x=1,y=m;b=m;while(x<=y)          //直接二分{mid=(x+y)/2;if(arr[mid]>=P){b=mid;y=mid-1;}else x=mid+1;}if(m==1)             //分情况输出。{printf("%dn",abs(P-arr[1]));}else{if(b==1)printf("%dn",abs(P-arr[b]));elseprintf("%dn",min(abs(P-arr[b]),abs(P-arr[b-1])));}}return 0;
}

本文发布于:2024-02-01 14:41:23,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676968437327.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:礼品   采购
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23