結果
問題 | No.15 カタログショッピング |
ユーザー |
|
提出日時 | 2025-06-09 18:17:39 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 844 bytes |
コンパイル時間 | 413 ms |
コンパイル使用メモリ | 82,144 KB |
実行使用メモリ | 88,844 KB |
最終ジャッジ日時 | 2025-06-09 18:17:41 |
合計ジャッジ時間 | 1,917 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 WA * 6 |
ソースコード
import sys from collections import defaultdict read = sys.stdin.buffer.read N,S,*P=map(int,read().split()) def get_subset_sums(P): n=len(P) dp=[0]*(1<<n) for mask in range(1,1<<n): last_bit=mask&-mask i=last_bit.bit_length()-1 dp[mask]=dp[mask^last_bit]+P[i] return dp dpl=get_subset_sums(P[:N//2]) dpr=get_subset_sums(P[N//2:]) dpr_memo = defaultdict(list) for maskr, sumr in enumerate(dpr): dpr_memo[sumr].append(maskr) def decode(s, t): n=N//2 nums=[] for i in range(n): if s>>i&1: nums.append(i+1) for j in range(N-n): if t>>j&1: nums.append(n+j+1) return tuple(nums) solutions=[] for maskl, suml in enumerate(dpl): for maskr in dpr_memo[S-suml]: solutions.append(decode(maskl, maskr)) for solution in solutions: print(*solution)