Cod sursa(job #1262069)

Utilizator GooggaIoana Iaru Googga Data 12 noiembrie 2014 22:57:26
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 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=1,suma=0;
   for(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(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;
}