Cod sursa(job #3356396)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 31 mai 2026 16:34:56
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int v[16001];
int n, k;

int transport(int x) {
    int nr = 1; //cate transporturi am facut
    int s = 0;
    for(int i = 1; i <= n; i++) {
        if(s + v[i] <= x) {
            s = s + v[i];
        } else {
            nr++;
            s = v[i];
        }
    }
    return nr;
}

int main() {
	ifstream cin("transport.in");
    ofstream cout("transport.out");
    cin >> n >> k;
    int st = 0;
    int dr = 0;
    for(int i = 1; i <= n; i++) {
        cin >> v[i];
        if(v[i] > st) {
            st = v[i];
        }
        dr += v[i];
    }
    int sol = 0;
    while(st <= dr) {
        int mid = (st + dr) / 2;
        //daca avem un camion de capacitate mid cate transporturi
        //folosim pentru cele N saltele
        if(transport(mid) <= k) {
            sol = mid;
            dr = mid - 1;
        } else {
            st = mid + 1;
        }
        
    }
    cout << sol;

}