Cod sursa(job #2123688)

Utilizator oso.andinoooIonut Stan oso.andinooo Data 6 februarie 2018 15:28:23
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#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; }