結果
| 問題 |
No.332 数列をプレゼントに
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-09 20:57:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,382 bytes |
| コンパイル時間 | 201 ms |
| コンパイル使用メモリ | 82,208 KB |
| 実行使用メモリ | 53,424 KB |
| 最終ジャッジ日時 | 2025-04-09 20:59:33 |
| 合計ジャッジ時間 | 4,684 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 2 TLE * 1 -- * 39 |
ソースコード
N, X = map(int, input().split())
A = list(map(int, input().split()))
non_ones = []
ones_indices = []
for idx, num in enumerate(A):
if num == 1:
ones_indices.append(idx)
else:
non_ones.append((num, idx))
# Sort non_ones by descending value, and then by descending index to prioritize larger indices for the same value
non_ones.sort(key=lambda x: (-x[0], -x[1]))
count_ones = len(ones_indices)
def dfs(index, current_sum, selected):
if current_sum > X:
return None
if index == len(non_ones):
required = X - current_sum
if required >= 0 and required <= count_ones:
return (selected, required)
return None
# Try to include the current element
num, idx = non_ones[index]
res = dfs(index + 1, current_sum + num, selected + [idx])
if res is not None:
return res
# Skip the current element
res = dfs(index + 1, current_sum, selected)
return res
result = dfs(0, 0, [])
if result is None:
print("No")
else:
selected_non_ones, required_ones = result
answer = ['x'] * N
for idx in selected_non_ones:
answer[idx] = 'o'
# Take the first 'required_ones' elements from ones_indices
if required_ones > 0:
selected_ones = ones_indices[:required_ones]
for idx in selected_ones:
answer[idx] = 'o'
print(''.join(answer))
lam6er