結果
| 問題 |
No.15 カタログショッピング
|
| コンテスト | |
| ユーザー |
ytft
|
| 提出日時 | 2022-11-03 05:28:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 94 ms / 5,000 ms |
| コード長 | 593 bytes |
| コンパイル時間 | 257 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 92,836 KB |
| 最終ジャッジ日時 | 2024-07-17 16:20:06 |
| 合計ジャッジ時間 | 1,564 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
import sys
input=lambda:sys.stdin.readline().rstrip()
N,S=map(int,input().split())
A=[int(input()) for i in range(N)]
def makeDict(A):
ans={}
for i in range(2**len(A)):
temp,cur=i,0
for j in range(len(A)):
cur+=(temp%2)*A[-1-j]
temp//=2
if not cur in ans:
ans[cur]=[]
ans[cur].append(i)
return ans
P,Q=makeDict(A[:N//2]),makeDict(A[N//2:N])
ans=[]
for i in P:
if S-i in Q:
for j in P[i]:
for k in Q[S-i]:
ans.append(j*2**(N-N//2)+k)
ans=sorted(ans)[::-1]
for i in ans:
p=[]
temp=i
for i in range(N,0,-1):
if temp%2:
p.append(i)
temp//=2
print(*p[::-1])
ytft