Cod sursa(job #2871105)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 12 martie 2022 21:14:18
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#define NMAX 10000
using namespace std;

int n;
int v[NMAX + 1];

int check(int x){
  int sum = 0, nrt = 1;
  for (int i = 1; i <= n; i++){
    if (sum + v[i] <= x)
      sum += v[i];
    else
      sum = v[i], nrt ++;
  }
  return nrt;
}

int main(){

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

  int maxx, k, s;
  fin >> n >> k;

  s = 0;
  maxx = 0;
  for (int i = 1; i <= n; i++){
    fin >> v[i];
    s += v[i];
    maxx = max (v[i], maxx);
  }
  int st, dr;
  st = maxx, dr = s;
  int sol = -1;
  while (st <= dr){
    int mij = (st + dr) / 2;
    if (check(mij) <= k){
      dr = mij - 1;
      sol = mij;
    }
    else st = mij + 1;
  }

  fout << sol;
  return 0;
}