Cod sursa(job #2394953)

Utilizator Caproiu_VictorCaproiu Victor Caproiu_Victor Data 2 aprilie 2019 09:31:48
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;
const int NMAX= 16000;
int v[NMAX+5];//16005x4B=64020B
int n,k;
ifstream fin("transport.in");
ofstream fout("transport.out");

bool ok(int c){
  int i,sc,tr;
  sc=tr=0;
  for(i=1;i<=n;i++){
    if(v[i]>c)
      return 0;
    if(sc+v[i]<=c)
      sc=sc+v[i];
    else{
      tr++;
      sc=v[i];
    }

  }
  tr++;
  return tr<=k;
}

int bsL(int st,int dr){
  int med,last=-1;

  while(st<=dr){
    med=(st+dr)/2;
    if(ok(med)){
      last=med;
      dr=med-1;
    }
    else
      st=med+1;
  }
  return last;
}

int main()
{
    int i,s;
    fin>>n>>k;
    s=0;
    for(i=1;i<=n;i++){
      fin>>v[i]; s=s+v[i];
    }
    fout<<bsL(1,s);
    fin.close();
    fout.close();
    return 0;
}