Pagini recente » Borderou de evaluare (job #2046050) | Borderou de evaluare (job #2181949) | Cod sursa (job #77681)
Cod sursa(job #77681)
#include<stdio.h>
#define infinit 2000000000 // 2 miliarde
int n, k, i, v[16005], s, max, rezultat;
int bs(){
int li = max, ls = s, par, min = infinit, ss, p, nrt;
while (li <= ls){
p = (li+ls)/2;
nrt = 1;
ss = 0;
par = 0;
for (i=1; i<=n; i++){
par += v[i];
if (par > p){
nrt ++;
par = v[i];
}
if (nrt > k)
ss = 1;
}
if (ss)
li = p+1;
else{
if (p < min)
min = p;
ls = p-1;
}
}
return min;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d", &n, &k);
for (i=1; i<=n; i++){
scanf("%d", &v[i]);
s += v[i];
if (v[i] > max)
max = v[i];
}
rezultat = bs();
printf("%d\n", rezultat);
fclose(stdin);
fclose(stdout);
return 0;
}