Pagini recente » Cod sursa (job #2138255) | Cod sursa (job #1533121) | Cod sursa (job #1093175) | Cod sursa (job #1050048) | Cod sursa (job #1834686)
#include <iostream>
#include <stdio.h>
using namespace std;
int N, K;
int A[1000000];
bool check_capacity(int c, int K){
int i = 0;
int suma = 0;
int nr_transporturi = 0;
while(i<N){
if(A[i] > c)
return 0;
while(suma + A[i]<= c && i<N){
suma+=A[i];
i++;
}
suma = 0;
nr_transporturi++;
}
if(nr_transporturi <= K)
return true;
return false;
}
int cautare_binara(int st, int dr, int K){
int m = (st+dr)/2;
if(st == dr)
return st;
if(check_capacity(m, K))
cautare_binara(st, m, K);
else
cautare_binara(m+1, dr, K);
}
int main(){
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
cin >> N >> K;
for(int i=0; i<N; i++)
cin >> A[i];
cout << cautare_binara(0, 16000, K);
return 0;
}