상세 컨텐츠

본문 제목

2805번: 나무 자르기 - 이분 탐색(매개 변수 탐색)

알고리즘/baekjoon

by oVeron 2023. 5. 26. 16:42

본문

728x90
반응형

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

 

2805번: 나무 자르기

첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보

www.acmicpc.net

1654번 랜선 자르기와 동일한 문제.

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

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef tuple<int, int, int> tii;

ll N, M;
vector<ll> tree;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    cin >> N >> M;
    for (int i{1}; i <= N; i++)
    {
        ll len;
        cin >> len;
        tree.push_back(len);
    }

    ll l = 0, r = 1000000000;
    while (l < r)
    {
        ll m = (l + r) / 2 + 1;

        ll sum = 0;
        for (ll len : tree)
        {
            if (m >= len)
                continue;
            sum += len - m;
        }

        if (sum >= M)
            l = m;
        else
            r = m - 1;
    }
    cout << l << "\n";
}
728x90
반응형

관련글 더보기

댓글 영역