#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>
 
int main()
{
    int N = 0;
    std::cin >> N;
 
    std::vector<int> vec(N, 0);
 
    int iMax = 0;
 
    for (int i = 0; i < N; ++i)
    {
       std::cin >> vec[i];
       iMax += vec[i];
    }
 
    int M = 0;
    std::cin >> M;
 
    std::sort(vec.begin(), vec.end());
 
    if (M >= iMax)
    {
        std::cout << vec[N - 1];
        return 0;
    }
 
    else
    {
        int iNumber = 0;
 
        for (int i = 1; i < N; ++i)
        {
            iNumber += vec[i - 1];
            int iAns = std::round((M - iNumber) / (N - i));
 
            if (iAns >= vec[i - 1] && iAns <= vec[i])
            {
                std::cout << iAns;
                return 0;
            }
 
        }
    }
 
    std::cout << M / N;
 
    return 0;
}

이분 탐색...? 이렇게 해서 풀었는데 이것도 이분 탐색이라고 할 수 있나? 흠 잘 모르겠다...

+ Recent posts