我正在尝试解决这个问题,但我最多只能得到 78 分,但我需要把它提高到 100 分。请帮我找出代码中的错误在哪里。
任务
买家想要按一定顺序购买 K 个产品。计算买家将花费多少钱(假设他将每个产品作为单独的订单,因此到他下次购买时,它将受到最大可能的折扣。
输入数据:
首先输入数字N(自然,不超过10)——折扣总数。然后输入N对数字:折扣金额ai(自然,不超过100)和必须超过才能获得这样的折扣的金额xi(自然,不超过100,000)。接下来,输入数字K——买家想要购买的商品数量(自然,不超过100个)。接下来是K个数字——每种产品的价格(自然不超过1000)。保证后续每次折扣的金额都大于前一次折扣后的金额,也保证后续每次折扣的价值大于前一次折扣的价值。保证网上商店所有价格都是100的倍数。
输出:打印一个数字 - 买家将为给定的购买订单花费多少钱。
实施例1
初始数据:
2
2 10
4 100
2
100
100
结果:(
198
注意,超过金额才享受折扣,所以第一次购买后折扣不是4,而是2%)
实施例2
初始数据:
3
2 10
4 20
8 30
1
1000
结果:(
1000
折扣仅在购买后才计入)
我的代码:
n = int(input())
a, x = [0] * n, [0] * n
for i in range(n):
a[i], x[i] = map(int, input().split())
a[i] = 1 - (a[i] / 100)
k = int(input())
prices = [int(input()) for _ in range(k)]
s = 0
j = 0
x.append(0)
for i in range(k):
if s > x[j]:
s += prices[i] * a[j]
if s > x[j + 1]:
j += 1
else:
s += prices[i]
print(int(s))