Cod sursa(job #1262072)

Utilizator GooggaIoana Iaru Googga Data 12 noiembrie 2014 23:00:20
Problema Transport Scor 80
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(long int a)
{
    long int tr=1,suma=0;
   for(long int i=1;i<=n;i++)
   {
       if(suma+v[i]<=a)
        suma=suma+v[i];
       else
       {
           suma=v[i];
           tr++;
       }
   }
   if(tr<=k)
    return 1;
   return 0;
}
int bs(long int st,long int dr)
{
    long 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()
{
    long 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;
}