Cod sursa(job #2223079)

Utilizator BatedCrayonBratosin David - Robert BatedCrayon Data 19 iulie 2018 02:33:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define NMAX 16001

using namespace std;

int A[NMAX],n,k,C,s,maxim;

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

int CalcTransport(int ip)
{
    int trans,i,cap;
    i=1;
    cap=trans=0;
    while(i<=n)
    {
        if(cap+A[i]<=ip)
        {
            cap+=A[i];
            i++;
        }
        else
        {
            trans++;
            cap=0;
        }
    }
    return trans+1;
}


int CautBinar()
{
    int p,u,m,rez;
    p=maxim;
    u=s;
    while(p<=u)
    {
        m=p+(u-p)/2;
        if(CalcTransport(m)<=k)
        {
            rez=m;
            u=m-1;
        }
        else
            p=m+1;
    }
    return rez;
}

void Citire()
{
    in>>n>>k;
    for(int i=1; i<=n; i++)
    {
        in>>A[i];
        if(A[i]>maxim)
            maxim=A[i];
        s+=A[i];
    }
}

int main()
{
    Citire();
    out<<CautBinar();
    return 0;
}