Cod sursa(job #3156142)

Utilizator swebypepe lepe sweby Data 10 octombrie 2023 17:35:16
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

 using namespace std;


int v[16000];

int findMinimunNumberOfDrumuri(int c,int n){
  int i,ccur,drum;
  ccur = c;
  drum = 1;
  for(i = 1; i <= n; i++){
    if(v[i] <= ccur){
      ccur -=v[i];
    }
    else{
      drum ++;
      ccur = c - v[i];
    }
    if(v[i] > c){
      return 16001;
    }
  }
  return drum;
}

 int main() {
  ifstream fin("transport.in");
  ofstream fout("transport.out");
  int i,n,k,mincam,st,dr,mij;
  fin >> n >> k;
  for(i = 1; i <= n; i ++){
    fin >> v[i];
  }
  st = 1;
  dr = 256000000;
  while(st <= dr){
      mij = (st + dr) / 2;
    if(findMinimunNumberOfDrumuri(mij,n) <= k){
      dr = mij - 1;
      mincam = mij;
    }
    else{
      st = mij + 1;
    }

  }
  fout << mincam;
  return 0;
}