백준 2343 기타 레슨
https://www.acmicpc.net/problem/2343
이분탐색 문제입니다. 블루레이 크기를 기준으로 m개 이하의 블루레이를 만들 수 있는지 확인하는 방식으로 탐색하였습니다.
#include<bits/stdc++.h>
using namespace std;
const int SZ=100005;
int arr[SZ];
int n,m;
bool bi_search(int t){
int grp=0, ans=0;
for(int i=1;i<=n+1;i++){
if(arr[i]>t) return false;
if(grp+arr[i]>t || i==n+1){
ans++;
grp=arr[i];
}
else grp+=arr[i];
}
return ans<=m;
}
int main(void){
ios::sync_with_stdio(false); cin.tie(NULL);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>arr[i];
int l=0, r=(int)1e9+5;
int ans=r;
while(l<=r){
int mm=(l+r)/2;
if(bi_search(mm)){
ans=min(ans,mm);
r=mm-1;
}
else l=mm+1;
}
cout<<ans;
return 0;
}