Pagini recente » Cod sursa (job #2887166) | Profil EdgeLordXD | Cod sursa (job #3171839) | Cod sursa (job #2505847) | Cod sursa (job #377637)
Cod sursa(job #377637)
#include <cstdio>
#define DIM 16110
using namespace std;
int i, sum, A[DIM], upbound, lowbound, K, N;
int cbin (int low, int up)
{
int sol = 0, mid, k, x;
while ( low <= up )
{
mid = (low + up) / 2;
k = 1;
for ( x = 0, i = 1; i <= N ; i++)
{
if ( A[i] > mid ) { k = DIM; break; }
if ( x + A[i] <= mid ) x += A[i];
else ++ k, x = A[i];
}
if ( !x ) --k;
if (k > K) low = mid + 1;
else if (k == K) sol = mid, up = mid - 1;
else if ( k < K ) up = mid - 1;
}
return sol;
}
void solve ()
{
scanf ("%d%d\n", &N, &K);
for (i = 1; i <= N; i++)
{
scanf ("%d\n", &A[i]);
if (lowbound < A[i]) lowbound = A[i];
sum += A[i];
}
upbound = sum;
printf ("%d\n", cbin (lowbound, upbound) );
}
int main ()
{
freopen ("transport.in", "r", stdin);
freopen ("transport.out", "w", stdout);
solve ();
return 0;
}