카테고리 없음

[백준/C++] 16401번: 과자 나눠주기

Jinn_12609 2025. 2. 2. 11:24

문제

 

https://www.acmicpc.net/problem/16401


Algorithm

 

 


 

 

Code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int m, n, input;
    cin >> m >> n;

    vector<int> snacks;

    for(int i=0; i<n; i++)
    {
        cin >> input;
        snacks.push_back(input);
    }

    sort(snacks.begin(), snacks.end());

    int low = 1;
    int high = snacks[n-1];

    int result = 0;

    while(low <= high)
    {
        int mid = (low + high)/2;

        int cnt = 0;
        for(int i=0; i<n; i++)
        {
            cnt += snacks[i]/mid;    
        }

        if(cnt < m)
        {
            high = mid - 1;
        }
        else
        {
            result = mid;
            low = mid + 1;
        }
    }

    cout << result;

    return 0;
}