Cod sursa(job #1822897)

Utilizator vladbrb03Barbu Vlad vladbrb03 Data 5 decembrie 2016 18:53:29
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
using namespace std;
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    int n,k,v[16001],c=0,s,d,m,poz,l1;
    cin>>n>>k;
    int l2=0;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
        if(c<v[i])
            c=v[i];
        l2+=v[i];
    }
    l1=c;

    while(l1<=l2)
    {
        m=(l1+l2)/2;
        d=0;s=0;
        for(int i=1;i<=n;i++)
        {
            if(s+v[i]<=m)
                s=s+v[i];
            else
                {d++;s=v[i];}
        }
        d++;
        if(d>k)
            l1=m+1;
        else{
            l2=m-1;
            poz=m;
        }
    }
    cout<<poz;
    return 0;
}