Pagini recente » Cod sursa (job #1670203) | Cod sursa (job #336911) | Borderou de evaluare (job #2296934) | Cod sursa (job #2991309) | Cod sursa (job #2123688)
#include <bits/stdc++.h>
using namespace std;
int s[160005], n, k;
bool check(int c) {
int q = 1, su = 0, t = 1;
while (q <= n) {
if (su + s[q] <= c)
su = su + s[q];
else {
t++;
su = s[q]; }
q++; }
if (t > k)
return 1;
return 0; }
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int c = 0;
scanf("%d", &n);
scanf("%d", &k);
for (int i = 1; i <= n; i++) {
scanf("%d", &s[i]); }
for (int bit = 1 << 20; bit > 0; bit = bit / 2) {
if (check(c + bit))
c = c + bit; }
printf("%d\n", c + 1);
return 0; }