Cod sursa(job #2890053)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 14 aprilie 2022 11:21:36
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 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];
        }
        if (v[i] > x)
            return N * 10;
    }
    return rez;
}

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

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

    int putere, i;
    for (putere = 1; putere <= maxx; putere <<= 1);
    for (i = 0; putere; putere >>= 1) {
        if ((i + putere) <= maxx && get_transporturi(i + putere) > k) {
            i += putere;
        }
    }
    // cout << get_transporturi(7) << endl;
    fout << i + 1;

    return 0;
}