Pagini recente » Cod sursa (job #2918842) | Cod sursa (job #75860) | Cod sursa (job #1183098) | Cod sursa (job #252920) | Cod sursa (job #2810377)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int NMAX = 16003;
int v[NMAX], n;
int t(int x)
{
int aux = 0, cnt = 1;
for (int i = 1; i <= n; i++)
if (aux + v[i] > x)
{
cnt++;
aux = v[i];
}
else
aux += v[i];
return cnt;
}
int main()
{
//redoing some stuff, I guess.
int k, i, sum = 0;
cin >> n >> k;
for (i = 1; i <= n; i++)
{
cin >> v[i];
sum += v[i];
}
int st = 1, dr = sum, sol = -1;
while (st <= dr)
{
int med = (st + dr) / 2, tr;
tr = t(med);
if (tr <= k)
{
sol = med;
dr = med - 1;
}
else
st = med + 1;
}
cout << sol;
}