Link to this code: https://cses.fi/paste/4125181b8fb9a611dd385a/
#include <bits/stdc++.h>
using namespace std;

using ll = long long;


bool validsum(ll sum , int arr[],int n,int k){
    ll cntsum = 0; 
    int parts = 0;
    
    for (int i=0;i<n;i++) {
        cntsum += arr[i];
        if(cntsum > sum){
            parts++;
            cntsum = arr[i];
        }
   
    }
    parts++;

    return parts <= k;
}


int main() {
	// your code goes here
	int n,k;cin >> n >> k;
	int arr[n];
	for(int i = 0;i<n;i++){
	    cin >>arr[i]; 
	}
// 	apply bs on increasing sum
	ll maxel = *max_element(arr,arr+n);
    ll total = accumulate(arr, arr+n,0LL);
    
    ll l = maxel, h = total;
    ll ans = total;
    while(l <= h){
        ll mid = (l + h)/2;
        // cout <<"low : "<< l << " and h: "<< h<<endl;
        
        if(validsum(mid,arr,n,k)){

            ans = mid;
            h = mid - 1;
        }else{
            l = mid + 1;
        }
    }
    cout << ans << "\n";
}