結果
| 問題 | No.15 カタログショッピング |
| コンテスト | |
| ユーザー |
convexineq
|
| 提出日時 | 2020-11-24 06:12:45 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 212 ms / 5,000 ms |
| コード長 | 964 bytes |
| コンパイル時間 | 254 ms |
| コンパイル使用メモリ | 81,636 KB |
| 実行使用メモリ | 80,936 KB |
| 最終ジャッジ日時 | 2024-07-23 18:23:23 |
| 合計ジャッジ時間 | 2,087 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
# coding: utf-8
# Your code here!
import sys
readline = sys.stdin.readline
read = sys.stdin.read
#a,b,c = map(int,readline().split())
def f(r):
n = len(r)
v = [0]
for i in r:
v += [vi+i for vi in v]
v = [(v[i],i) for i in range(1<<n)]
return v
n,s,*p = map(int,open(0).read().split())
a = f(p[:n//2])
b = f(p[n//2:])
#print(b)
a.sort(key=lambda x:x[0])
b.sort(key=lambda x:x[0])
from bisect import bisect_left,bisect_right
la = n//2
lb = n-la
ans = []
for bi,i in b:
if s < bi: break
l = bisect_left(a,(s-bi,-1))
r = bisect_right(a,(s-bi,1<<31))
for aj,j in a[l:r]:
res = []
v = 0
for k in range(la):
v += 1
if j>>k&1:
res.append(v)
for k in range(lb):
v += 1
if i>>k&1:
res.append(v)
ans.append(res)
#print(aj,j,bi,i)
ans.sort()
for i in ans: print(*i)
convexineq