Pagini recente » Cod sursa (job #423455) | Cod sursa (job #3238058) | Cod sursa (job #2698682) | Cod sursa (job #3187221) | Cod sursa (job #1251681)
#include <iostream>
#include <cstdio>
using namespace std;
int n , k ,v[16007];
int greedy(int x)
{
int nr=1;
int suma=0;
for ( int i = 1 ; i <= n ; ++i )
{
if ( v [ i ] > x )
return 0 ;
if (suma+v[i]<=x){
suma=suma+v[i];
}
else
{
suma=v[i];
nr++;
}
}
if (nr>k)return 0;
return 1;
}
int main()
{
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] ) ;
int st=1,sol;
int dr=2560000;
while (st<=dr)
{
int mij=(st+dr)/2;
if ( greedy (mij) == 1 ){
dr=mij-1;
sol=mij;
}
else
st=mij+1;
}
printf ("%d" , sol);
return 0;
}