Pagini recente » Cod sursa (job #2375228) | Cod sursa (job #1886203) | Cod sursa (job #2259458) | Cod sursa (job #1957307) | Cod sursa (job #122475)
Cod sursa(job #122475)
#include <stdio.h>
#include <vector>
using namespace std;
#define in "transport.in"
#define out "transport.out"
#define dim 16001
int N, K, C;
int A[dim];
bool Ok(int);
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d", &N, &K);
for ( int i = 1; i <= N; i++ )
scanf("%d", &A[i]);
int st, dr, mij;
st = 1, dr = 1000000;
while ( st <= dr )
{
mij = (st+dr)>>1;
if ( Ok(mij) ) C = mij, dr = mij-1;
else st = mij + 1;
}
printf("%d", C);
}
bool Ok(int C)
{
int last = 0, T = 1;
for ( int i = 1; i <= N; i++ )
{
if ( A[i] > C ) return 0;
if ( last + A[i] > C ) T += 1, last = A[i];
else last += A[i];
if ( T > K ) return 0;
}
if ( T <= K ) return 1;
return 0;
}