나무 자르기 C++ - 백준 2805

김관중·2024년 1월 24일
0

백준

목록 보기
25/129

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

떡볶이 떡 만들기와 유사하다.

코드는 다음과 같다.

#include <iostream>
#include <algorithm>
#define MAX_CNT 1000000
#define MAX_LENGTH 10000000000
typedef long long ll;
using namespace std;

int n,m;
int heights[MAX_CNT];
ll s=0;
ll e=MAX_LENGTH;
ll ans=0;

int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	cin >> n >> m;
	for(int i=0;i<n;i++){
		cin >> heights[i];
	}
	while(s<=e){
		ll mid=(s+e)/2;
		ll result=0;
		for(int i=0;i<n;i++){
			if(heights[i]>mid) result+=heights[i]-mid;
		}
		if(result<m){
			e=mid-1;
		}
		else{
			ans=max(mid,ans);
			s=mid+1;
		}
	}
	cout << ans;
}
profile
꾸준히 학습하기

0개의 댓글

관련 채용 정보