Cod sursa(job #2749711)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 7 mai 2021 19:14:13
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>

//#define cin inn
//#define cout outt
#define INT_MAX 160001

using namespace std;

//ifstream cin("transport.in");
//ofstream cout("transport.out");


int n,k,v[16001];


bool check(int nr)
{
    int cmp=1,c=0;
    for(int i=0;i<=n;i++)
    {
        if(v[i]>nr) return 0;
        if(c+v[i]>nr)
        {
            cmp++;
            c=0;
        }
        if(i!=n) c+=v[i];
    }
    return cmp<=k;

}


int main()
{

    cin>>n>>k;

    int up=0,mx=0;

    for(int i=0;i<n;i++)
    {
        cin>>v[i];
        up+=v[i];
        if(v[i]>mx) mx=v[i];
    }
    int low=up/k;

    int mn=INT_MAX;
    int next=(up-low)/2+low;
    int div=(up-low)/2+div%2;

    while(div>0)
    {
        div=div/2;
        //cout<<next<<' '<<div<<' '<<low<<' '<<up<<'\n';
        bool flag=check(next);
        if(flag)
        {
           mn=mn>next?next:mn;
           next-=div;
        }
        else next+=div;

    }
    cout<<mn;

    return 0;
}