Pagini recente » Cod sursa (job #3135954) | Cod sursa (job #3267338) | Cod sursa (job #408523) | Cod sursa (job #2510203) | Cod sursa (job #2850605)
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
const int NMAX = 16000;
int v[NMAX + 5];
int n , k , i;
bool ok(int c)
{
int tr , s , i;
tr = s = 0;
for(i = 1; i <= n; ++i)
{
if(v[i] > c)
return false;
s += v[i];
if(s > c)
{
tr++;
s = v[i];
}
}
if(s > 0)
tr++;
return tr <= k;
}
int bs(int st , int dr)
{
int med , last;
last = -1;
while(st <= dr)
{
med = (st + dr) / 2;
if(ok(med))
{
last = med;
dr = med - 1;
}
else
st = med + 1;
}
return last;
}
int main()
{
int s = 0;
cin >> n >> k;
for(i = 1; i <= n; ++i)
{
cin >> v[i];
s += v[i];
}
cout << bs(v[1] , s);
return 0;
}