T1:非力なレッド

勇者 taiga 正尝试打倒 N 只怪物。taiga 的战斗力为 X,生命值为 M。怪物 i 的战斗力为 Aitaiga 在和怪物战斗前可以使用以下魔法任意次:

  • 选择一个满足 1kmin(N,M) 的整数 k,对所有满足 1ik 的整数 i,将 Ai 替换成 Ai2,然后将 M 替换成 Mk

taiga 在战斗时,只有当 X>max1iNAi 时才能打到所有怪兽,否则 taiga 连一只怪物都打不倒就输了。
taiga 可否在战斗前正确使用魔法打败所有怪物。

限制:

  • 1N2×105
  • 1X109
  • 0M109
  • 1Ai109

算法分析

可以考虑贪心:从后往前对所有满足 AkXk 使用 t 次魔法,同时更新 M 的值

其中 t 表示可以令 Ai2t<X 的最小整数

最后判断 M 是否是非负数即可

代码实现
n, x, m = map(int, input().split())
a = list(map(int, input().split()))
for i in range(n-1, -1, -1):
while a[i] >= x:
for j in range(i+1):
a[j] /= 2
m -= i+1
if m >= 0:
print("Yes")
else:
print("No")