Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

dh-winternagi 님의 블로그

(2805) 나무 자르기 본문

백준 (C++)/Solve

(2805) 나무 자르기

dh-winternagi 2026. 4. 18. 17:07

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

단계별로 풀어보기

25단계(이분 탐색) 4번째

 

 

 

전기톱 높이를 x로 설정했을 때 얻어지는 나무의 길이가 M보다 큰지 작은지에 대한 결정 문제로 바꾸고 이분 탐색을 수행하면 된다.

 

 

 

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

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  
  int n, m;
  
  cin >> n >> m;
  
  vector<int> v(n);
  
  for(int i=0;i<n;i++)  cin >> v[i];
  
  int lo= 0, hi= 1000000001;
  
  while(lo+1<hi){
    int mid= (lo+hi)/2;
    long cnt= 0;
    
    for(int i=0;i<n;i++)  cnt+= max(0, v[i]-mid);
    
    (cnt>=m ? lo : hi)= mid;
  }
  
  cout << lo;
  
  return 0;
}

'백준 (C++) > Solve' 카테고리의 다른 글

(1300) K번째 수  (0) 2026.04.18
(2110) 공유기 설치  (0) 2026.04.18
(1654) 랜선 자르기  (0) 2026.04.18
(10816) 숫자 카드  (0) 2026.04.18
(1920) 수 찾기  (0) 2026.04.18