Pagini recente » Cod sursa (job #1804444) | Cod sursa (job #2139518) | Cod sursa (job #3214894) | Cod sursa (job #2336767) | Cod sursa (job #3241921)
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
const int NMAX = 16e3 + 5, INF = 1e9; /// 16 * 10^3
int v[NMAX];
int n, k;
int check(int x){
int aux= 0, s = 0;
for(int i = 0; i<n; i++){
if(s + v[i]>x){
aux++;
s = 0;
}
s += v[i];
}
if(s) aux++;
return aux;
}
int main()
{
cin >> n >> k;
for(int i = 0; i<n; i++)
cin >> v[i];
int st = 0, dr = INF, rasp = -1, ans;
while(st<=dr){
rasp = (dr+st)/2;
if(check(rasp) <= k){
ans = rasp;
dr = rasp-1;
}
else{
st = rasp + 1;
}
}
cout << ans;
return 0;
}