Pagini recente » Cod sursa (job #1992840) | Cod sursa (job #3342136)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int INF=1e9;
int v[16005];
int k;
int n;
int ok(int c){
int i=1, op=1, sum=0;
while(i<=n){
if(v[i]>c){
op=INF;
return op;
}
if(sum+v[i]>c){
op++;
sum=v[i];
}
else
sum=sum+v[i];
i++;
}
return op;
}
int BSL(int st, int dr){
int med, last=-1, t;
while (st<=dr){
med=(st+dr)/2;
t=ok(med);
cout<<med<<" "<<t<<"\n";
if(t<=k){
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main(){
cin>>n>>k;
int s=0;
for(int i=1; i<=n; i++){
cin>>v[i];
s=s+v[i];
}
int rasp=BSL(1, s);
cout<<rasp;
return 0;
}