結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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))
0