AtCoder Grand Contest 027の解説記事です。
目次
AGC027 A – Candy Distribution Again
問題
問題文の要約は以下の通りです。
問題の要約
\(N\) 人の子供に \(x\) 個のお菓子をすべて配り切らなければなりません。子供 \(i\) (\(1 \le i \le N\)) はちょうど \(a_i\) 個のお菓子を貰うと喜ぶとき、喜ぶ子供の人数の最大値を求めよ。
解説
\(a_i\) を昇順にソートして、小さい順にお菓子を配る。
解説
\(a_i\) を昇順にソートして、小さい順にお菓子を配ります。
最後以外の子供は配ることができれば、答えの人数に+1
加算をします。
最後の子供はぴったり配り終えることができれば、答えの人数に+1
加算になります。
解答
# 入力
N,x=map(int,input().split())
a=list(map(int,input().split()))
# aを昇順でソート
a.sort()
# 答え(喜ぶ子供の人数の最大値)
ans=0
# aの小さい順にお菓子を配る
for i in range(N):
# 最後の子供はぴったり配り終えたら答え+1
if i==N-1 and a[i]==x:
x-=a[i]
ans+=1
# 最後以外の子供は配ることができればば答え+1
elif i<N-1 and a[i]<=x:
x-=a[i]
ans+=1
# 不足していればこれ以上配れないので終了
else:
print(ans)
exit()
# 答えを出力
print(ans)