Cod sursa(job #2889918)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 13 aprilie 2022 19:09:54
Problema Transport Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

#define N 16005

using namespace std;

int v[N], n;

int get_transporturi(int x) {
    int rez = 0, S = x + 1;
    for (int i = 0; i < n; ++i) {
        if (S + v[i] <= x)
            S += v[i];
        else {
            ++rez;
            S = v[i];
        }
    }
    return rez;
}

int main() {
    ifstream fin("transport.in");
    ofstream fout("transport.out");

    int n, k;
    fin >> n >> k;
    
    int minx = N, maxx = 0;
    for (int i = 0; i < n; ++i) {
        fin >> v[i];
        minx = min(minx, v[i]);
        maxx = max(maxx, v[i]);
    }

    int putere, i;
    for (putere = 1; putere <= n; putere <<= 1);
    for (i = 1; putere; putere >>= 1) {
        if ((i | putere) <= maxx && get_transporturi(i | putere) < k)
            i |= putere;
    }

    fout << i + 1;

    return 0;
}