Cod sursa(job #1522526)

Utilizator sabin.antoheSabin Antohe sabin.antohe Data 11 noiembrie 2015 19:47:08
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#include<math.h>
using namespace std;
int n ,k;
int v[16005];

inline bool ok(int c) {
  int kk = k;
  int cc = c;
  for(int i = 1; i <= n; i++) 
    if(cc - v[i] >= 0)
      cc -= v[i];
    else {
      kk--;
      cc = c - v[i];
    }

  return (kk > 0);
}

inline int binary(int st, int dr) {
  int mid = ceil((st+dr) / 2);

  if(dr-st <= 1) {
    if(ok(st))  return st;
    else
      return dr;
  }
 
  if(ok(mid))
    return binary(st, mid);
  else
    return binary(mid, dr);
}
  

int main(void) {
  ifstream fin("transport.in");
  ofstream fout("transport.out");

  fin >> n;   fin >> k;
  int max1 = -1;
  for(int i = 1; i <= n; i++) {
    fin >> v[i];
    max1 = v[i] > max1 ? v[i] : max1;
  }

  int x = binary(max1, n * max1);   
  fout << x;  
}