Pagini recente » Cod sursa (job #110886) | Cod sursa (job #1342222) | Cod sursa (job #515725) | Cod sursa (job #2840847) | Cod sursa (job #3315760)
#include <stdio.h>
#include <stdlib.h>
int stiva[16000];
int verif(int n, int cap, int k){
int ind, cnt, sum;
cnt = sum = 0;
for(ind = 0; ind < n; ind ++){
if(sum + stiva[ind] > cap){
cnt ++;
sum = 0;
}
sum += stiva[ind];
}
cnt ++;
if(cnt <= k){
return 1;
}else{
return 0;
}
}
int caut_bin(int n, int k){
int st, dr, mij, rez;
st = 1;
dr = (1 << 31) - 1;
while(st <= dr){
mij = (st + dr) / 2;
if(verif(n, mij, k)){
rez = mij;
dr = mij - 1;
}else{
st = mij + 1;
}
}
}
int main()
{
FILE *fin, *fout;
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
int n, k, i;
fscanf(fin, "%d%d", &n, &k);
for(i = 0; i < n; i ++){
fscanf(fin, "%d", &stiva[i]);
}
fprintf(fout, "%d\n", caut_bin(n, k));
return 0;
}