백준 풀이 C++

백준 2805 C++ (이분탐색)

ag2개발자 2022. 9. 24. 17:18
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ss stable_sort
#define ll long long



int main() {
    cin.tie(0)->sync_with_stdio(0);

    int n, m;
    cin >> n >> m;
    
    vector<int> v;
    for (int i = 0,x; i < n; i++) {
        cin >> x;
        v.pb(x);
    }   //입력
    int Max = *max_element(v.begin(), v.end()); //최대길이 떡이 end
    int start = 1;
    int end = Max;
    int ans=0;
    while (start <= end) {
        ll sum = 0;    //잘린 떡 저장용
        int mid = (start + end) / 2;    //이분탐색용 미드
        for (int i = 0; i < n; i++) {
            if (v[i]>mid) {
                sum += v[i] -mid;   //더 길면 자르고 sum에 추가
            }
        }
        if (sum < m) {
            end = mid - 1;   //떡의 길이가 m에 못미치면 자르는 길이를 줄임
        }
        else {
            ans = mid;
            
            start = mid + 1;
        }    //반대
    }
    cout << ans;

    return 0;
}

'백준 풀이 C++' 카테고리의 다른 글

백준 1072 C++(이분탐색)  (0) 2022.09.27
백준 1072 c++ 이분탐색  (0) 2022.09.27
백준 2630 C++ (분할과 정복)  (0) 2022.09.24
백준 3020 c++ (이분탐색)  (1) 2022.09.24
백준 7785 c++ set 역순 출력  (1) 2022.09.23