Cod sursa(job #1679981)

Utilizator mocanuboAlexandru Mocanu mocanubo Data 8 aprilie 2016 13:56:09
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

int main()
{
    ifstream cin ("transport.in");
    ofstream cout ("transport.out");
    int i,n,k,v[16001],z,l1,l2,m,s,pp;
    cin>>n>>k;
    for(i=1; i<=n; i++)
        cin>>v[i];
    l1=1;
    l2=16000;
    while(l1!=l2-1)
    {

        m=(l1+l2)/2;
        i=1;
        s=0;
        z=0;

        while(i<=n)
        {

            if(v[i]>m)
            {
                z=k+1;
                break;
            }

            if (s==0 && i==n)
            {
                z++;
                break;
            }
            s=s+v[i];

            if(s>m)
            {
                s=0;
                z++;
                i--;
            }
            i++;

        }
        if (z==0)
            z=1;
        // cout << l1 << "-" << l2 << " Pt cap " << m << " facem " << z << " transporturi"<<endl;
        if(z<=k)
        {
            l2=m;
            pp=m;
        }
        else if(z>k)
        {
            l1=m;
        }


    }
    cout<<pp;

    return 0;
}