#2805. 나무 자르기

sese·2022년 11월 13일
0

백준

목록 보기
5/8

파라메트릭 서치를 이용하여 문제를 해결한다.

c++

int main() {

    vector<int> v;
    
    int n, m;
    cin >> n >> m;
    
    while(n--) {
        int x;
        cin >> x;
        v.push_back(x);
    }
    
    sort(v.begin(), v.end());
    
    int l = 0, r = v[v.size() - 1], answer;
    
    while(l <= r) {
        int mid = ( l + r ) / 2;
        long long sum = 0;
        
        for(int i=0; i<v.size(); i++) {
            if ( v[i] > mid ) {
                sum += ( v[i] - mid );
            }
        }
        
        if (sum >= m) {
            // 길이 충족
            answer = mid;
            l = mid + 1;
        } else {
            // 길이 충족 못함
            r = mid - 1;
        }
    }
    cout << answer;
}
profile
예전 글은 다크모드로 봐야 잘 보일 수도 있습니다.

0개의 댓글