Cod sursa(job #2713685)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 28 februarie 2021 14:32:48
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
long long  v[16001], x, i, j, nr, st, dr, mid, k, n, maxim, s;
int simulare(int x){
    int sum=0, nr=0;
    for(i=1;i<=n;i++){
        sum=sum+v[i];
        if(v[i]>x){
            return k+1;
        }
        if(sum>x){
            nr++;
            sum=v[i];

        }
        if(nr>k){
            return k+1;
        }

    }
    nr++;
    return nr;

}
int main() {
    cin>>n>>k;
    for(i=1;i<=n;i++){
        cin>>v[i];
        if(v[i]>maxim)
            maxim=v[i];
        s=s+v[i];
    }
    st=maxim;
    dr=s;
    while(st<=dr){
        mid=(st+dr)/2;
        int tr=simulare(mid);
        if(tr>k)
            st=mid+1;
        else
            dr=mid-1;


    }
    cout<<st;



}