Pagini recente » Cod sursa (job #84752) | Cod sursa (job #952369) | Cod sursa (job #471643) | Cod sursa (job #888661) | Cod sursa (job #2999226)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int v[16005];
int n;
ifstream fin("transport.in");
ofstream fout("transport.out");
int test(int c, int k){
int sum = 0;
for(int i = 1; i <= n; i ++){
sum+=v[i];
if(sum>c){
sum=v[i];
k--;
}
}
return k>=1;
}
int cautbin(int st, int dr, int k){
int med;
int ans;
while(st<=dr){
med = (st+dr)/2;
fout<<st<<" "<<dr<<endl<<med<<endl;
if(test(med, k)){
dr=med-1;
ans=med;
fout<<1<<endl;
}else{
st=med+1;
fout<<0<<endl;
}
}
return ans;
}
int main(){
int k, maxnr=-1;
fin>>n>>k;
for(int i = 1; i <= n; i++){
fin>>v[i];
if(v[i]>maxnr){
maxnr=v[i];
}
}
int st=maxnr, dr=256000000;
fout<<cautbin(st, dr, k);
}