코테

[백준 2343] 기타레슨 c++

29도 맑음 2021. 12. 22. 22:33
반응형
#include<iostream>

using namespace std;

int n,m;
int arr[100000]={0,};
int result;

int binarySearch(int start, int end){
    if(start>end)   return 0;
    int mid = (start+end)/2;
    int temp = 0;
    int num = 0;
    for(int i=0; i<n; i++){
        if(temp+arr[i]>mid){
            num++;
            temp = 0;
            i--;
        }else{
            temp+=arr[i];
        }
        if(num>m){
            binarySearch(mid+1,end);
            return 0;
        }
    }
    num++;
    if(num>m){
        binarySearch(mid+1,end);
        return 0;
    }
    result = mid;
    binarySearch(start, mid-1);
    return 0;
}

int main(){
    cin>>n>>m;
    for(int i=0; i<n; i++){
        cin>>arr[i];
    }
    int left = 0, right = n*10000;
    binarySearch(left, right);
    cout<<result;
    return 0;
}
반응형