Cod sursa(job #1259614)

Utilizator GooggaIoana Iaru Googga Data 10 noiembrie 2014 11:31:19
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[16005];
bool ok(int a)
{
    int tr=0,s=0;
   for(int i=1;i<=n;i++)
   {
       if(s+v[i]<=a)
        s=s+v[i];
       else
       {
           s=0;
           tr++;
       }
   }
   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()
{
    int s=0,a;
    in>>n>>k;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
       s=s+v[i];
    }
    a=bs(1,s);
    out<<a;
    return 0;
}