Painter Problem Error

#include<bits/stdc++.h>
using namespace std;

bool timePossible(int mid, int time[], int n, int k, int t){
int timeSpent = 0, painter=1;

cout<<mid<<"\n";
for(int i=0; i<n; i++){
	if(timeSpent + time[i] <= mid){
		timeSpent += time[i];
	}
	else{
		
		if(painter + 1>k){
			return false;
		}

		painter++;
		timeSpent=0;
		i--;
	}
}
return true;

}

int main() {
int n, k, t, total_size=0;
cin>>n>>k>>t;
int a[n], time[n];
for( int i=0; i<n; i++){
cin>>a[i];
total_size+= a[i];
}

for( int i=0; i<n; i++){
	time[i]= a[i]*t;
}

int s= *max_element(time, time+n) , e= t*total_size, ans;

while(s<=e){
	int mid=(s+e)/2;

	if(timePossible(mid, time, n, k, t)){
		ans=mid;
		e=mid-1;
	}
	else{
		s=mid+1;
	}
}

cout<<ans % 10000003;
return 0;

}

there must be a condition in code, when if(time[i] > mid) it return false

also use long long int

When time[i] > mid
Next painter is called
Painter++
If (painter> k)
Then return false.

Okay it basically depends upon the low a nd high, as you have chosen the low has max element from array, so it will not be a problem

#include<bits/stdc++.h> using namespace std; bool timePossible(long long int mid, long long int time[], long long int n, long long int k, long long int t){ long long int timeSpent = 0, painter=1; cout<<mid<<"\n"; for(long long int i=0; i<n; i++){ if(timeSpent + time[i] <= mid){ timeSpent += time[i]; } else{ if(painter + 1>k){ return false; } painter++; timeSpent=0; i–; } } return true; } int main() { long long int n, k, t, total_size=0; cin>>n>>k>>t; long long int a[n], time[n]; for( long long int i=0; i<n; i++){ cin>>a[i]; total_size+= a[i]; } for( long long int i=0; i<n; i++){ time[i]= a[i]*t; } long long int s= max_element(time, time+n) , e= ttotal_size, ans; while(s<=e){ long long int mid=(s+e)/2; if(timePossible(mid, time, n, k, t)){ ans=mid; e=mid-1; } else{ s=mid+1; } } cout<<ans % 10000003; return 0; }

@alien share ide link of your code