Cod sursa(job #2404844)

Utilizator maria_608Iacob Maria maria_608 Data 13 aprilie 2019 14:39:58
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;

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

bool CamionOK (int C, int n, int k, int a[] )
{
    int i=1, c, nr_drumuri=0;
    while(i<=n)
    {
        c=0;
        while(c+a[i]<=C && i<=n)
        {
            c=c+a[i];
            i++;
        }
        nr_drumuri++;

    }
    if(nr_drumuri<=k)
        return true;
    return false;

}

int main()
{
    int n, k, a[16001], max=0, s=0;
    f>>n>>k;
    for(int i=1; i<=n; i++)
    {
        f>>a[i];
        s=s+a[i];
        if(a[i]>max)
            max=a[i];
    }
    int st=max, dr=s, mij, sol;
    while(st<=dr)
    {
        mij=st+(dr-st)/2;
        if(CamionOK(mij,n,k,a))
        {
            sol=mij;
            dr=mij-1;
        }
        else
            st=mij+1;

    }
    g<<sol;
    g.close();
    f.close();

    return 0;
}