Pagini recente » Cod sursa (job #2194904) | Cod sursa (job #980923) | Cod sursa (job #72820) | Cod sursa (job #646661) | Cod sursa (job #3234246)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define limita 16005
int n, k, v[limita];
int maxi = -1;
long long int s;
bool verif(long long int 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 int st = maxi, dr = s;
while(st <= dr)
{
long long m = st + (dr - st)/2;
if(verif(m))
dr = m-1;
else
st = m + 1;
}
fout << st;
}
int main()
{
fin >> n >> k;
for(int i=1; i<=n; i++)
fin >> v[i], maxi = max(maxi, v[i]), s += v[i];
cautare();
}