Pagini recente » Cod sursa (job #2022325) | Cod sursa (job #159870) | Cod sursa (job #2216249) | Cod sursa (job #1123054) | Cod sursa (job #2810353)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMAX = 16005;
int n, v[NMAX], k;
bool check(int c)
{
int i, cnt, sum;
sum = c + 1;
cnt = 0;
for(i = 1; i <= n; i++)
{
if(v[i] > c)
return 0;
if(sum + v[i] <= c)
sum += v[i];
else
{
sum = v[i];
cnt++;
}
}
if(cnt <= k)
return 1;
return 0;
}
int main()
{
int i, st, dr, med, last;
fin >> n >> k;
for(i = 1; i <= n; ++i)
fin >> v[i];
st = 1;
dr = NMAX * NMAX;
while(st <= dr)
{
med = (st + dr) / 2;
if(check(med))
{
dr = med - 1;
last = med;
}
else
st = med + 1;
}
fout << last;
return 0;
}