Pagini recente » Cod sursa (job #445454) | Cod sursa (job #903593) | Cod sursa (job #3231525) | Cod sursa (job #1977132) | Cod sursa (job #1836240)
#include <iostream>
#include <cstdio>
using namespace std;
int a[16001], n;
bool capacitate(int c, int k)
{
int i = 0, s = 0, nr_transp = 0;
while(i < n){
if(a[i] > c)
return false;
while(s + a[i] <= c && i < n){
s += a[i];
i++;
}
s = 0;
nr_transp++;
}
if(nr_transp <= k)
return true;
return false;
}
int bin_search(int st, int dr, int k)
{
int mid;
mid = st + (dr - st) /2;
if(st == dr)
return st;
if(capacitate(mid, k))
bin_search(st, mid, k);
else
bin_search(mid+1, dr, k);
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int k, i, nr_transport;
scanf("%d%d", &n, &k);
for(i = 0 ; i < n ; ++i)
{
scanf("%d", &a[i]);
}
nr_transport = bin_search(1, 10000000000, k);
printf("%d\n", nr_transport);
return 0;
}