Cod sursa(job #2807879)

Utilizator hoprixVlad Opris hoprix Data 24 noiembrie 2021 12:15:35
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int N, K, v[16000];

int drumuri(int k) {
    int d = 1, s = 0;
    for (int i = 0; i < N; i++) {
        if (s+v[i] <= k)
            s += v[i];
        else {
            s = v[i];
            d++;
        }
    }
    return d;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    ifstream fin("transport.in");
    ofstream fout("transport.out");

    fin >> N >> K;
    for (int i = 0; i < N; i++)
        fin >> v[i];
    
    int st = 1, dr = 16000, sol = -1;
    while (st <= dr) {
        int mj = (st+dr)/2;
        if (drumuri(mj) <= K) {
            dr = mj-1;
            sol = mj;
        }
        else st = mj+1;
    }
    fout << sol;

    return 0;
}