頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

AGC027 A - Candy Distribution Again

問題はこちら atcoder.jp

方針

要求するお菓子が少ない子どもから順番に配っていけばいいですが,N-1 番目まで配って N 番目の子どもに配る際は注意が必要。要求するぴったりの数でないと喜んでくれないので,別で(残っているお菓子の数)=N 番目の子どもが要求するお菓子の数)であるかを確認しています。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int n,x;
    cin>>n>>x;
 
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
 
    sort(a.begin(),a.end());
 
    int happy=0;
 
    while(x>=a[happy] && happy<n-1){
        x-=a[happy];
        happy++;
    }
 
    if(happy==n-1){
        if(x==a[happy]){
            happy++;
        }
    }
 
    cout<<happy<<endl;
}