結果
| 問題 | No.332 数列をプレゼントに |
| コンテスト | |
| ユーザー |
vwxyz
|
| 提出日時 | 2023-12-01 04:56:37 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 885 bytes |
| コンパイル時間 | 814 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 817,664 KB |
| 最終ジャッジ日時 | 2024-09-26 15:08:42 |
| 合計ジャッジ時間 | 5,376 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 MLE * 1 |
| other | -- * 42 |
ソースコード
import sys
readline=sys.stdin.readline
N,X=map(int,readline().split())
A=list(map(int,readline().split()))
M=10**5
idx0=[]
idx1=[]
for i in range(N):
if A[i]>=M:
idx0.append(i)
else:
idx1.append(i)
le0=len(idx0)
le1=len(idx1)
dp=[0]*(le1+1)
dp[0]|=1
for i in range(1,le1+1):
dp[i]=dp[i-1]|dp[i-1]<<A[idx1[i-1]]
for bit in range(1<<le0):
s=sum(A[idx0[i]] for i in range(le0) if bit&1<<i)
if X-s>=0 and dp[le1]&1<<X-s:
ans_lst=[None]*N
for i in range(le0):
if bit&1<<i:
ans_lst[idx0[i]]="o"
else:
ans_lst[idx0[i]]="x"
s=X-s
for i in range(le1-1,-1,-1):
if dp[i]&1<<s:
ans_lst[idx1[i]]="x"
else:
ans_lst[idx1[i]]="o"
s-=A[i]
print(*ans_lst,sep="")
break
else:
print("No")
vwxyz