Cod sursa(job #3140300)

Utilizator vozian.anghelinaAnghelina Vozian vozian.anghelina Data 5 iulie 2023 14:26:21
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
int n, k, A[16011];

int transport(int c_max){
    int t = 1, c_tmp = 0;

    for(int i=0; i<n; i++){
        if(A[i] > c_max){
            return 1e9;
        }

        if(c_tmp + A[i] <= c_max){
            c_tmp += A[i];
        } else {
            t++;
            c_tmp = A[i];
        }
        
    }

    return t;
}

int caut(int cl, int cr, int t_max){
    if(cl==cr){
        return cl;
    }

    int cm = (cl+cr)/2;
    int tm = transport(cm);
    
    if(tm <= t_max){
        if(transport(cm-1) <= t_max){
            return caut(cl, cm - 1, t_max);
        }
        return cm;
    }

    return caut(cm+1, cr, t_max);
}

int main(){
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    cin >> n >> k;

    for(int i=0; i<n; i++){
        cin >> A[i];
    }

    cout << caut(1, 16000*16000+100, k);
}