Cod sursa(job #1879016)

Utilizator cyg_contnr1Rares Burghelea cyg_contnr1 Data 14 februarie 2017 17:49:35
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
int const NMAX=16000;
int v[NMAX+5];
ifstream cin("transport.in");
ofstream cout("tansport.out");
int main()
{
    int n, k, i, total=0, st, dr, med, last, tr,s;
    cin>>n>>k;
    for(i=1; i<=n; ++i)
    {
        cin>>v[i];
        total+=v[i];
    }

    st=1;
    dr=total;
    last=0;
    while(st<=dr)
    {
        med=(st+dr)/2;
        tr=0;
        s=0;
        for(i=1; i<=n; ++i)
        {
            if(v[i]>med)
        {
            tr=k+1;
            break;
        }
        if(s+v[i]<=med)
            s=s+v[i];
        else
        {
            tr++;
            s=v[i];
        }
        }
        if(s<=med)
            tr++;
            if(tr<=k)
        {
            last=med;
            dr=med-1;
        }
        else
            st=med+1;
    }
    cout<<last;
    cin.close();
    cout.close();
    return 0;
}