結果
| 問題 | No.3713 海底探索 |
| ユーザー |
|
| 提出日時 | 2026-09-22 04:24:52 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 851 bytes |
| 記録 | |
| コンパイル時間 | 67 ms |
| コンパイル使用メモリ | 82,508 KB |
| 実行使用メモリ | 76,816 KB |
| 最終ジャッジ日時 | 2026-09-22 04:24:56 |
| 合計ジャッジ時間 | 3,081 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 WA * 2 |
ソースコード
N, A, B = map(int, input().split())
XY = [tuple(map(int, input().split())) for _ in range(N)]
# (個数, 攻撃)
#dp = [[SortedList(key=lambda x: (-x[1], -x[0])) for _ in range(A + 1)] for _ in range(N)]
dp = [[[] for _ in range(A + 1)] for _ in range(N)]
dp[0][0].append((0, 0))
if XY[0][0] <= A:
dp[0][XY[0][0]].append((1, XY[0][1]))
for i in range(1, N):
for j in range(A+1):
min_attack = 10**12
dp[i-1][j].sort(key=lambda x: (-x[1], -x[0]))
for a in dp[i-1][j]:
if a[1]+XY[i][1] >= min_attack:
continue
min_attack = a[1]+XY[i][1]
if j+XY[i][0] <= A and a[1]+XY[i][1] <= B:
dp[i][j+XY[i][0]].append((a[0]+1, a[1]+XY[i][1]))
dp[i][j].append(a)
ans = 0
for a in dp[-1]:
if a and a[0][0] > ans:
ans = a[0][0]
print(ans)