Pagini recente » Cod sursa (job #2013266) | Cod sursa (job #466744) | Clasament simulare-e4-3 | Monitorul de evaluare | Cod sursa (job #739856)
Cod sursa(job #739856)
#include <cstdio>
const int N_MAX=16000;
int n;
int v[N_MAX+1];
int fct(int x){
int nrt, cap;
nrt=1;
cap=x;
for (int i=1; i<=n; ++i){
if (v[i]>cap){
++nrt;
cap=x;
}
cap-=v[i];
}
return nrt;
}
int main(){
int k, sol, auxbs, vmax, vsum;
freopen("transport.in", "r", stdin);
scanf(" %d %d ", &n, &k);
vmax=0;
vsum=0;
for (int i=1; i<=n;++i){
scanf(" %d ", &v[i]);
if (v[i]>vmax){
vmax=v[i];
}
vsum+=v[i];
}
fclose(stdin);
for (auxbs=1; auxbs<vsum; auxbs*=2){
}
sol=vsum;
for (; auxbs; auxbs/=2){
if (sol-auxbs>=vmax && fct(sol-auxbs)<=k){
sol-=auxbs;
}
}
freopen("transport.out","w",stdout);
printf("%d\n", sol);
fclose(stdout);
return 0;
}