結果
| 問題 |
No.1736 Princess vs. Dragoness
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 19:57:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,437 bytes |
| コンパイル時間 | 301 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 76,544 KB |
| 最終ジャッジ日時 | 2025-06-12 20:00:04 |
| 合計ジャッジ時間 | 5,397 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 WA * 7 |
ソースコード
import sys
def main():
N, A, B, X, Y = map(int, sys.stdin.readline().split())
H = list(map(int, sys.stdin.readline().split()))
for b in range(0, B+1):
# Case 1: Apply b B spells first, then compute A
current_H = H.copy()
Y_total = Y * b
remaining = Y_total
for i in range(N):
if current_H[i] <= 0:
continue
if remaining <= 0:
break
D = min(current_H[i], remaining)
current_H[i] -= D
remaining -= D
# Compute required A
total_a = 0
feasible = True
for h in current_H:
if h > 0:
total_a += (h + X - 1) // X
if total_a > A:
feasible = False
break
if feasible:
print("Yes")
return
# Case 2: Apply all A first, then b B spells
current_H_case2 = H.copy()
a_used = 0
for i in range(N):
if a_used >= A:
break
# Apply A to current monster as much as possible
if current_H_case2[i] <= 0:
continue
# Maximum possible A spells for this monster
max_a = (current_H_case2[i] + X - 1) // X # Ceiling division
apply_a = min(max_a, A - a_used)
current_H_case2[i] -= apply_a * X
a_used += apply_a
if current_H_case2[i] <= 0:
continue
# Apply one more if possible
if a_used < A:
apply_a = 1
current_H_case2[i] -= apply_a * X
a_used += apply_a
if current_H_case2[i] < 0:
current_H_case2[i] = 0
# Now apply b B spells
Y_total = Y * b
remaining = Y_total
for i in range(N):
if current_H_case2[i] <= 0:
continue
if remaining <= 0:
break
D = min(current_H_case2[i], remaining)
current_H_case2[i] -= D
remaining -= D
# Check if all are zero or below
all_zero = True
for h in current_H_case2:
if h > 0:
all_zero = False
break
if all_zero:
print("Yes")
return
print("No")
if __name__ == "__main__":
main()
gew1fw