📕알고리즘 문제/📝Baekjoon

[백준] 실버2 : (2512) 예산

주으기 2024. 4. 16. 10:05
728x90
반응형

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

 

2512번: 예산

첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상

www.acmicpc.net

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int N, Num;
vector<int> v;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> N;

    for (int i = 0, j; i < N; ++i)
    {
        cin >> j;
        v.push_back(j);
    }
    cin >> Num;

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

    int left = 1, right = v[v.size() - 1];

    while (left <= right)
    {
        int mid = (left + right) / 2, temp = 0;

        for (const auto& i : v)
        {
            if (i - mid > 0) temp += mid;
            else temp += i;
        }

        if (Num < temp) right = mid - 1;
        else if (Num >= temp) left = mid + 1;
    }

    cout << right << "\n";
}

 

 

 

 

 

728x90
반응형