Cod sursa(job #1979479)

Utilizator matei.manu2000@yahoo.comMatei Manu [email protected] Data 10 mai 2017 17:51:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    int n,k,s,max,l1,l2,m,i,nr,elem,v[16001];
    cin>>n>>k;
    s=0;
    max=0;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
        s=s+v[i];
        if(max<v[i])
            max=v[i];
    }
    l1=max;
    l2=s;
    while(l1<=l2)
    {
        m=(l1+l2)/2;
        i=1;
        nr=0;
        while(i<=n)
        {
            s=0;
            while(s+v[i]<=m)
            {
                s=s+v[i];
                i++;
            }
            nr++;
        }
        if(nr>k)
            l1=m+1;
        else
        {
            elem=m;
            l2=m-1;
        }
    }
    cout<<elem;
    return 0;
}