Cod sursa(job #2556039)

Utilizator DianatepTepus Diana Dianatep Data 24 februarie 2020 17:23:17
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int v[16000];
int lol(int nr, int n, int k){
    int s=0, tr=0;
    for(int i=1; i<=n; i++){
        if(v[i]>nr){
            return k+1;
        }
        if(v[i]+s<=nr){
            s+=v[i];
        }
        else{
            tr++;
            s=v[i];
        }
    }
    return tr+1;
}
int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    int n,k,st,mij,x;
    cin>>n>>k;
    for(int i=1; i<=n; i++){
        cin>>v[i];
      //  lol(nr, n, k);
    }
    st=1;
    long long dr=256000000;
    while(st<=dr){
        mij=(st+dr)/2;
        if(lol(mij,n,k)<=k){
            dr=mij-1;
            x=mij;
        }
        else
            st=mij+1;
    }
cout<<x<<endl;

    return 0;
}