Cod sursa(job #2911004)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 26 iunie 2022 12:49:41
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda 3_iulie Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;

int n, k, a[16002];

int trans(int t){
    int sum = 0, ans = 1;
    for(int i =1;i<=n;i++){
        if(sum + a[i] <= t){
            sum += a[i];
        }else{
            ans++;
            sum = a[i];
        }
    }
    return ans;
}

int main(void){
    ofstream cout("transport.out");
    ifstream cin("transport.in");
    cin >> n >> k ;
    int dr = 0, st = 0;
    for(int i = 1;i<=n;i++){
        cin >> a[i];
        dr += a[i];
        st = max(st, a[i]);
    }
    int mid=  0,  ans = 0;
    while(st <= dr){
        mid = (st + dr) / 2;
        if(trans(mid) <= k){
            ans = mid;
            dr = mid-1;
        }
        else{
           st = mid+1;

        }

    }
    cout << ans;
}