結果
| 問題 |
No.332 数列をプレゼントに
|
| コンテスト | |
| ユーザー |
qwewe
|
| 提出日時 | 2025-04-24 12:20:44 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,683 bytes |
| コンパイル時間 | 172 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 115,800 KB |
| 最終ジャッジ日時 | 2025-04-24 12:21:53 |
| 合計ジャッジ時間 | 5,398 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 36 WA * 6 |
ソースコード
n, x = map(int, input().split())
a = list(map(int, input().split()))
# Filter out elements greater than x and collect their original indices
rest_a = []
original_indices = []
for idx, num in enumerate(a):
if num <= x:
rest_a.append(num)
original_indices.append(idx)
sum_rest = sum(rest_a)
if sum_rest < x:
print("No")
elif sum_rest == x:
# All elements in rest_a are used, others are excluded
res = ['o' if idx in original_indices else 'x' for idx in range(n)]
print(''.join(res))
else:
K = sum_rest - x
if K == 0:
res = ['o' if idx in original_indices else 'x' for idx in range(n)]
print(''.join(res))
else:
# Check if K can be formed by a subset of rest_a
# For large K, check if any single element equals K
if K > 1e6:
found = False
for i in range(len(rest_a)):
if rest_a[i] == K:
# Construct the answer
res = ['x'] * n
# Mark all elements not in rest_a as 'x'
for idx in range(n):
if a[idx] > x:
res[idx] = 'x'
else:
if idx == original_indices[i]:
res[idx] = 'x'
else:
res[idx] = 'o'
print(''.join(res))
found = True
break
if not found:
print("No")
else:
# Use dynamic programming
max_k = K
dp = [False] * (max_k + 1)
prev = [[] for _ in range(max_k + 1)]
dp[0] = True
prev[0] = []
for i in range(len(rest_a)):
num = rest_a[i]
for j in range(max_k, num - 1, -1):
if dp[j - num] and not dp[j]:
dp[j] = True
prev[j] = prev[j - num] + [i]
if dp[K]:
selected = prev[K]
# Build the result
selected_in_original = set()
for i in selected:
selected_in_original.add(original_indices[i])
res = []
for idx in range(n):
if a[idx] > x:
res.append('x')
else:
if idx in selected_in_original:
res.append('x')
else:
res.append('o')
print(''.join(res))
else:
print("No")
qwewe