首页 > 试题广场 >

支付宝消费打折

[编程题]支付宝消费打折
  • 热度指数:5547 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
众所周知,在一些消费支付的场合中,往往有“支付宝九五折”的优惠。
这天小苯来到了超市购买物品,一共有 n 种物品,每种物品只能购买一个,但有的物品支持优惠活动,有的并不支持。恰好本超市的结账是有“支付宝九五折”优惠的,小苯的支付宝余额还剩 k 元,他想知道他仅使用支付宝进行支付的话,最多能买几件物品?

输入描述:
输入包含三行。
第一行两个正整数 n, k\ (1 \leq n \leq 10^5), \ (1 \leq k \leq 10^9)
第二行包含 n 个正整数 a_i (1 \leq a_i \leq 10^4) 表示每个物品的价格。
第三行一个长度为 n 的只含有 01 的字符串,表示每个物品是否支持优惠。(如果是 1 代表第 i 个物品支持优惠,否则不支持。)


输出描述:
输出一行一个整数表示答案。
示例1

输入

5 9
3 4 2 3 1
11101

输出

4

说明

选择买第 1,3,4,5 个物品。
n,k = map(int,input().split())
a = list(map(int,input().split()))
s = input()

for i in range(n):
    if s[i]=='1':
        a[i] *= 0.95

sorted_a = sorted(a)
summ = 0
for j in range(n):
    summ += sorted_a[j]
    if summ>k:
        print(j)
        break
if summ<=k:
    print(n)
发表于 2025-08-25 23:50:00 回复(0)