Cod sursa(job #1263335)

Utilizator VictoriaNevTascau Victoria VictoriaNev Data 14 noiembrie 2014 17:13:29
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#define NMAX 16000
using namespace std;
long long n, S, k, i, v[NMAX+5];
bool ok (int c)
{   long long s=0, i=0, tr=1;
    for(i=1; i<=n; i++)
    {
        if(s+v[i]<=c)
            s+=v[i];
        else
        if(v[i]<=c)
        {
            s=v[i];
            tr++;
        }
        else
            return 0;
    }
    if(tr<=k)
    return 1;
    return 0;
}
int bs (int st,int dr)
{
    int med,last=-1;
    while (st<=dr)
    {
        med=(st+dr)>>1;
        if (ok(med))
         last=med,dr=med-1;
        else
            st=med+1;
    }
    return last;
}
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    cin>>n>>k;
    for (i=1; i<=n; i++)
        cin>>v[i],S+=v[i];
    cout<<bs(1,S);
    return 0;
}