Cod sursa(job #2749715)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 7 mai 2021 19:24:16
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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;

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

    int mn=INT_MAX;
    int next=(up+low)/2;
    while(next!=low)
    {
        if(check(next))
        {
           mn=mn>next?next:mn;
           up=next;
        }
        else low=next;
        next=(up+low)/2;
        //cout<<up<<' '<<low<<' '<<next<<'\n';
    }
    cout<<mn;
    return 0;
}