Pagini recente » Cod sursa (job #1826265) | Cod sursa (job #1017430) | Cod sursa (job #1602771) | Cod sursa (job #2065337) | Cod sursa (job #505640)
Cod sursa(job #505640)
#include<cstdio>
const int N = 1<<14;
int v[N] , n , k , max = -1 ;
void read()
{
freopen ( "transport.in" , "r" , stdin );
freopen ( "transport.out" , "w" , stdout );
scanf ( "%d%d" , &n , &k );
for (int i=1 ; i<=n ; ++i )
{
scanf ( "%d" , &v[i] );
//if (v[i]>max) v[i] = max;
}
}
bool ok(int c)
{
int nr = 0 , i , cap ;
for ( i=1 ; i<=n; )
{
cap = c;
if(v[i]>c)
return false;
while ( i<=n && cap>=v[i] )
{
if(v[i]>c)
return false;
cap-=v[i];
++i;
}
++nr;
}
return nr<=k;
}
int cautbin()
{
int i , pas = 1<<14;
for (i=0 ; pas!=0 ; pas>>=1 )
if (!ok(i+pas))
i+=pas;
return i+1;
}
int main()
{
read();
printf( "%d\n" , cautbin() );
return 0;
}