Cod sursa(job #3348868)

Utilizator prares06Papacioc Rares-Ioan prares06 Data 24 martie 2026 15:03:35
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
#include <algorithm>

std::ifstream fin("transport.in");
std::ofstream fout("transport.out");

int n, k;
std::vector<int> v;

bool check(int m){
    int s = 0, cnt = 1;
    for(int i = 0; i < n; ++i){
        if(v[i] > m){
            return false;
        }
        if(s + v[i] <= m){
            s += v[i];
        }
        else{
            s = v[i];
            ++cnt;
        }
    }
    return cnt <= k;
}

int main(){
    fin >> n >> k;

    v.resize(n);
    for(int& x : v)
        fin >> x;

    int st = *std::min_element(v.begin(), v.end()), dr = 16000 * 16000 + 1, poz = dr;
    while(st <= dr){
        int m = (st + dr) / 2;
        if(check(m)){
            dr = m - 1;
            poz = m;
        }
        else{
            st = m + 1;
        }
    }
    fout << poz;
}