Cod sursa(job #3146827)

Utilizator PescarusTanislav Luca Andrei Pescarus Data 22 august 2023 17:23:02
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

const int nmax = 16005;
int a[nmax];
int n,k;


int catedrumuri(int cap){
  int nr=1, volum=0;
  for(int i=1; i<=n; i++){
    if(volum + a[i] <= cap){
      volum += a[i];
    }
    else {
      volum = a[i];
      nr++;
    }
  }
  return nr;

}

int main(){
  f>>n>>k;
  int maxim = -1;
  for(int i=1; i<=n; i++){
    f>>a[i];
    maxim = max(maxim, a[i]);
  }
  int mid;
  int left = maxim, right = 16000*16000;
  int sol=0;
  while(left<=right){
    mid = (left+right)/2;
    if(catedrumuri(mid) <= k) {
      sol = mid;
      right = mid - 1;
    }
    else {
      left = mid + 1;
    }
  }
  g<<sol<<'\n';

}