Cod sursa(job #1679954)

Utilizator mocanuboAlexandru Mocanu mocanubo Data 8 aprilie 2016 13:41:46
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 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<=k){
            l2=m;
            pp=m;
        }
        else if(z>k)
        {
            l1=m;
        }


    }
    cout<<pp;

    return 0;
}