Pagini recente » Cod sursa (job #1462401) | Cod sursa (job #2133579) | Cod sursa (job #1012228) | Cod sursa (job #1053333) | Cod sursa (job #1106165)
#include <fstream>
using namespace std;
const int NMAX = 16005 ;
ifstream cin("transport.in") ;
ofstream cout("transport.out") ;
int N, K, V[NMAX] ;
int sum ;
inline bool verif(int Q)
{
int s=0, nr=1;
for(int i = 1 ; i <= N ; ++ i)
{
if(s + V[i] <= Q) s = s + V[i] ;
else if(V[i] <= Q)
{
++ nr ;
s = V[i] ;
}
else return false ;
}
if(nr <= K) return true;
else return false ;
}
inline int cbinare(int a, int b)
{
int mijloc ;
if(a == b ) return a ;
mijloc = ( a + b ) / 2 ;
if(verif(mijloc)) return cbinare(a, mijloc) ;
else return cbinare(mijloc + 1, b) ;
}
int main()
{
cin >> N >> K ;
for(int i = 1 ; i <= N ; ++ i)
{
cin >> V[i] ;
sum = sum + V[i] ;
}
cout << cbinare(1, sum) ;
cin.close() ;
cout.close();
return 0;
}