Cod sursa(job #2700961)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 29 ianuarie 2021 14:24:55
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
#define NMAX 16003

using namespace  std;

int n,k,hmax;
vector<int>v(NMAX);

int ok(int sol){
    int s=0,nr=1;
    for(int i=1;i<=n;i++){
        if(s+v[i]<=sol)
            s=s+v[i];
        else{
            s=v[i];
            nr++;
        }

    }

    return nr <= k;
}

int main() {
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    scanf("%d %d",&n,&k);

    int st=0,dr=0;
    for(int i=1;i<=n;i++){
        scanf("%d",&v[i]);
        hmax=max(hmax,v[i]);
        dr=dr+v[i];
    }

    st=hmax;
    while(st<=dr){
        int mid=(st+dr)/2;
        if (!ok(mid)) {
            st = mid + 1;
        } else {
            dr = mid - 1;
        }

    }
    printf("%d",st);

    return 0;
}