Pagini recente » Cod sursa (job #2499466) | Cod sursa (job #970923) | Cod sursa (job #10581) | Cod sursa (job #903853) | Cod sursa (job #3229499)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[17000];
int n, k, maxi = 0, sum = 0, rez;
bool valid(int mij)
{
int cont = 1, sum = v[0];
for(int i = 1; i < n; i++)
{
if(sum + v[i] > mij)
{
cont++;
sum = v[i];
}
else
sum += v[i];
}
if(cont > k)
return 0;
return 1;
}
signed main()
{
in>>n>>k;
for(int i = 0; i < n; i++)
{
in>>v[i];
maxi = max(maxi, v[i]);
sum += v[i];
}
int low = maxi;
int high = sum;
while(low <= high)
{
int mij = (low + high) / 2;
if(valid(mij))
{
rez = mij;
high = mij - 1;
}
else
{
low = mij + 1;
}
}
out<<rez;
}