Cod sursa(job #2480445)

Utilizator Patroescu_CasianPatroescu Casian Patroescu_Casian Data 25 octombrie 2019 17:07:50
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

bool check(int C,int n,int v[],int k)
{
    int Sum=0,ck=0,i;
    for(i=0;i<=n;++i)
    {
        if(Sum+v[i]<=C)
            Sum+=v[i];
        else
        {
            Sum=v[i];
            ++ck;
        }
    }
    if(Sum>0)
        ++ck;
    return(ck<=n);
}

int BinarySearch2(int N,int v[],int k)
{
  int Left = 1, Right = N;
  int Sol = -1;
  while(Left <= Right)
    {
      int Mid = (Left + Right) / 2;
      if(check(Mid,N,v,k))
        {
          Sol = Mid;
          Right = Mid - 1;
        }
      else
        Left = Mid + 1;
    }

  return Sol;
}

int main()
{
    int n,k,vol,i,v[20000];
    in>>n>>k;
for(i=1;i<=n;i++)
    in>>v[i];

out<<BinarySearch2(n,v,k)*2;


 return 0;
}