百度2024算法实习-编程题,购物

题目描述
在T城有一条很长的路,路上有n位居民和m家商场,每个居民和商场的位置各不相同,
这座域的居民都喜欢节约时间,所以他们只会送择去相距自己最近的一个商场购物,
如果有两个商场离一位居民的距离相同,那么他会选择坐标更小的那一个
输入描述
第一行包含两个正整数n和m,分别表示居民的数量和商城的数量
第二行包含n+m个正整数,第i个数xi表示第i个位置的坐标,数据保证每个xi互不相同
第三行包含n+m个正整数,第i个数ti表示第i个位置的是居民还是商城,如果ti=0表示居民,如果ti=1表示商城
输出描述
输出一行m个数,第i个数表示选择第i个商城的人数
输入数据
2 3
1 2 3 4 5
1 0 1 0 1
输出数据
1 1 0

def main():
    A = list(input())
    for a in A:
        if a == " ":
            A.remove(" ")
    n = int(A[0])
    m = int(A[1])
    sum = n + m
    i = 0
    B = list(input())
    for b in B:
        if b == " ":
            B.remove(" ")
    C = list(input())
    for c in C:
        if c == " ":
            C.remove(" ")
    dict1 = {}
    while i < sum:
        list_dict = [i + 1, C[i], 0]
        dict1[i] = list_dict
        i += 1
    keys = dict1.keys()
    people = []
    shopping = []
    for key in keys:
        if dict1[key][1] == "0":
            people.append(dict1[key][0])
        if dict1[key][1] == "1":
            shopping.append(dict1[key][0])
    for x_people in people:
        abs_num = []
        num = []
        for x_shopping in shopping:
            abs_num.append(abs(x_people - x_shopping))
            num.append(x_people - x_shopping)
        for key in keys:
            if dict1[key][0] == int(shopping[abs_num.index(min(abs_num))]):
                dict1[key][2] = 1
    for key in keys:
        if dict1[key][1] == "1":
            print(dict1[key][2], end="")

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值