結果
問題 | No.332 数列をプレゼントに |
ユーザー |
![]() |
提出日時 | 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))