https://hack.codingblocks.com/app/contests/421/p/1263
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll bsearch(ll *a,ll s,ll e,ll n,ll stu){
ll sum=0,c=1,ans;
while(s<e){
ll mid=(s+e)/2;
sum=0;c=1;
for(int i=0;i<n;i++){
sum+=a[i];
if(sum<=mid) continue;
else {
c++;
sum=a[i];}
// cout<<c<<" ";
}
if(c<=stu){
ans=mid;
// cout<<mid<<" ";
e=mid-1;}
else{
s=mid+1;
}
}
return ans;
}
int main() {
ll t,books,stu,s[1000];
ll cums=0;
cin>>t;
while(t–){
cin>>books>>stu;
for(int i=0;i<books;i++){
cin>>s[i];
cums+=s[i];
}
cout<<bsearch(s,s[0],cums,books,stu)<<endl;
}
return 0;
}
what is problem with logic it is giving wrong answer.