Official
B - Cutoff Editorial by physics0523
\(0\) 点を取った場合から \(100\) 点を取った場合までを、ループを用いてシミュレーションすることでこの問題を解くことができます。
なお、「総和から最大値と最小値を除いて最終結果とする」部分は、例えば以下の方法で求められます。
- 各ラウンドの得点を昇順にソートし、先頭と末尾以外の要素を足し合わせる。
- 最初に全ラウンドの得点を足し合わせ、そこから各ラウンドの得点のうち最大値と最小値を引き去る。
各パターンについて実装例を示します。
実装例 (Python):
N,X = map(int,input().split())
A = list(map(int,input().split()))
A.append(-1)
for last in range(0,101):
B = A.copy()
B[N-1] = last
B.sort()
sum = 0
for i in range(1,N-1):
sum += B[i]
if sum >= X:
print(last)
exit()
print("-1")
実装例 (Python):
N,X = map(int,input().split())
A = list(map(int,input().split()))
A.append(-1)
for last in range(0,101):
B = A.copy()
B[N-1] = last
sum = 0
ma = 0
mi = 100
for p in B:
sum += p
ma = max(ma,p)
mi = min(mi,p)
score = sum - ma - mi
if score >= X:
print(last)
exit()
print("-1")
posted:
last update: