Pagini recente » Cod sursa (job #1777912) | Cod sursa (job #460131) | Cod sursa (job #2275255) | Cod sursa (job #2147141) | Cod sursa (job #816238)
Cod sursa(job #816238)
#include <cstdio>
using namespace std;
int v[16005], k, n;
int getTransports(int maxc){
int vol=0, ts=1;
for(int i=1; i<=n; ++i){
if(vol+v[i]>maxc){
++ts; vol=0;
}
vol+=v[i];
}
return ts;
}
int searchForSolution(int hi, int lo){
int med = (hi+lo)/2, transp=getTransports(med);
if(hi==lo)
return lo;
if(transp>k)
return searchForSolution(hi, med+1);
else return searchForSolution(med, lo);
}
int main()
{
FILE *in=fopen("transport.in","r"), *out=fopen("transport.out","w");
int hi, lo=0;
fscanf(in, "%d %d\n", &n, &k);
for(int i=1; i<=n; ++i){
fscanf(in, "%d", &v[i]);
if(v[i]>lo) lo = v[i];
hi+=v[i];
}
fprintf(out, "%d\n", searchForSolution(hi, lo));
return 0;
}