Pagini recente » Cod sursa (job #1714310) | Cod sursa (job #2678199) | Cod sursa (job #2118699) | Cod sursa (job #400344) | Cod sursa (job #3233859)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
#define limita 16005
int n, k, v[limita];
int maxi = -1;
long long suma;
bool ebun(long long rez)
{
int s = 0, sol = 1;
for(int i = 1; i<=n; i++)
{
if(s + v[i] > rez)
s = v[i], sol++;
else s += v[i];
if(sol > k)
return false;
}
return sol <= k;
}
void cautare()
{
long long st = maxi, dr = suma;
while(st <= dr)
{
long long mid = st + (dr - st)/2;
if(ebun(mid))
dr = mid-1;
else
st = mid + 1;
}
g << st;
}
int main()
{
f >> n >> k;
for(int i=1; i<=n; i++)
f >> v[i], maxi = max(maxi, v[i]), suma += v[i];
cautare();
}