Cod sursa(job #2749702)

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

#define cin inn
#define cout outt

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;
    int div=(up-low)/4;

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

    return 0;
}