結果
| 問題 | No.3634 Made to order |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-08-21 22:17:40 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 156 ms / 2,000 ms |
| + 611µs | |
| コード長 | 840 bytes |
| 記録 | |
| コンパイル時間 | 244 ms |
| コンパイル使用メモリ | 95,848 KB |
| 実行使用メモリ | 89,516 KB |
| 最終ジャッジ日時 | 2026-08-21 22:17:49 |
| 合計ジャッジ時間 | 8,289 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サブタスク $1$ | 20 % | AC * 8 |
| サブタスク $2$ | 10 % | AC * 21 |
| サブタスク $3$ | 70 % | AC * 26 |
| 合計 | 3 * 100% = 300 点 |
ソースコード
def main():
n, d = list(map(int, input().split()))
A = [list(map(int, input().split())) for _ in range(n)]
inf = 1<<60
N = 1<<n
dp = [[] for _ in range(N)]
dp[0] = [(0, 0)]
for bit in range(N):
X = [u for u in range(n) if bit >> u & 1]
Y = [u for u in range(n) if not bit >> u & 1]
Z = []
a = sum([A[u][0] for u in X])
dp[bit].sort()
for b, c in dp[bit]:
if not Z or Z[-1][1] > c:
Z.append((b, c))
for v in Y:
ma, mb, mc = A[v]
for b, c in Z:
na = ma+a
nb = max(na, b)+mb
nc = max(nb, c)+mc
dp[bit|1<<v].append((nb, nc))
ans = min([a[1] for a in dp[-1]])
if ans <= d:
return "Yes"
else:
return "No"
print(main())
kidodesu