Cod sursa(job #2712997)

Utilizator alex.renteaRentea Bogdan Alexandru alex.rentea Data 26 februarie 2021 23:33:11
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int stiva[16001];
int main()
{
    int n,k,cap,max=0,st,dr,med,i,s,val;
    cin>>n>>k;
    for(i=1;i<=n;i++){
        cin>>stiva[i];
        if(stiva[i]>max)
            max=stiva[i];
    }
    st=max;
    dr=16000*n;
    while(st<=dr){
        med=(st+dr)/2;
        cap=1;
        s=0;
        for(i=1;i<=n&&cap<=k;i++){
            if(s+stiva[i]>med)
                s=stiva[i],cap++;
            else
                s=s+stiva[i];
        }
        if(cap<=k){
            val=med;
            dr=med-1;
        }
        else
            st=med+1;
    }
    cout<<val;
    return 0;
}