Cod sursa(job #3152185)

Utilizator Dragu_AndiDragu Andrei Dragu_Andi Data 24 septembrie 2023 11:52:58
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

const int nmax=16000;
int v[nmax], n;

int check(int vl)
{
    int s=0, cnt=1;
    for(int i=0; i<n; i++)
    {
        if(v[i] > vl) cnt=nmax;
        if(s+v[i] > vl)
        {
            s=0;
            cnt++;
        }
        s+=v[i];
    }
    return cnt;
}

int cb(int st, int dr, int k)
{
    int mij, tr, l;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        tr=check(mij);
        if(tr<=k)
        {
            dr=mij-1;
            l=mij;
        }
        else st=mij+1;
    }
    return l;
}

int main()
{
    int k;
    fin >> n >> k;
    for(int i=0; i<n; i++) fin >> v[i];
    fout << cb(0, nmax ,k);
    return 0;
}