whats wrong in this code?
#include
#include
#define ll long long
using namespace std;
bool time_taken(ll mid,ll k,ll n,ll boards[]){
ll no_of_painters=1;
ll sum=0;
for(ll i=0;i<n;i++){
if(sum + boards[i]>mid){
no_of_painters++;
if(no_of_painters>k)
return false;
else
sum=boards[i];
}
else
sum += boards[i];
}
return true;
}
ll search_space(ll n,ll k,ll t,ll boards[]){
ll sum=0;
for(ll i=0;i<n;i++){
sum += boards[i];
}
ll min=boards[n-1];
ll max=sum;
ll ans;
while(min<=max){
ll mid=(min+max)/2;
if(time_taken(mid,k,n,boards)){
ans=mid;
max=mid-1;
}
else
min=mid+1;
}
ans = ((ans%10000003)*(t%10000003))%10000003;
return ans;
}
int main() {
ll n,k,t;
cin>>n>>k>>t;
ll boards[100000];
for(ll i=0;i<n;i++){
cin>>boards[i];
}
sort(boards,boards+n,compare);
ll ans=search_space(n,k,t,boards);
cout<<ans;
return 0;
}