守望_sy 2021-12-07 22:14 采纳率: 63.2%
浏览 69
已结题

这个用python该怎么做啊?

最近点
时间限制:1秒
内存限制:256 MB
给定一条线上的 n 个不同点和 q 个查询。 查询是您需要从给定点中找到最近点的点。 所有点都位于 x 轴 (y = 0) 上。
这些点由它们的 x 坐标给出。
输入第一行包含一个整数 n (1 < n < 50,000)点的数量。
第二行包含 n 个整数 x1 x2 …xn点的坐标。
第三行包含 整数 m (1<m<50,000)点数。
接下来 m 行的 i^{th} 包含一个整数 pi,x。
保证每个坐标的绝对值不超过 10^6
输出为最近点的每个点 p_i 坐标打印一条消息。
如果有几个这样的点,打印任何一个。

例子
#标准输入
6#(已知的点的数量)
-7 3 8 12 -3 -10#(已知的点的坐标)
5#(查询点的数量)
-12 #(离-10最近 输出-10)
13 #(离12最近 输出12)
5
-2
0 #(离3和-3一样进,输出任意一个)
#标准输出
-10
12
3
-3
3

  • 写回答

1条回答 默认 最新

  • Clarence Liu 2021-12-07 22:51
    关注
    
    n = int(input())
    a = sorted(map(int, input().split()))
    m = int(input())
    b = []
    for i in range(m):
        x = int(input())
        b.append(x)
    for i in b:
        L = 0
        R = n - 1
        ans = -1
        while L <= R:
            mid = (R - L >> 1) + L
            if i > a[mid]:
                ans = mid
                L = mid + 1
            else:
                R = mid - 1
        if ans == -1:
            print(a[0])
        else:
            if ans + 1 > n - 1:
                print(a[ans])
            elif i - a[ans] <= a[ans + 1] - i:
                print(a[ans])
            else:
                print(a[ans + 1])
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 修改了问题 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么