Cod sursa(job #3330607)

Utilizator mirunaciobanuCiobanu Ioana Miruna mirunaciobanu Data 20 decembrie 2025 14:01:40
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001],n,k;
bool capacitateBuna(int mij){
  long long suma=0;
  int nrtr=0;
  for(int i=1; i<=n; i++){
    if(suma + v[i] <= mij)
      suma += v[i];
    else{
      nrtr++;
      suma = v[i];
    }
  }
  nrtr++;//ultimul transport
  if(nrtr<=k){
    return true;
  }
  return false;
}
int cb(int st, int dr){

  int rasp = -1;
  int mij;
  while (st<=dr){
    mij=(st+dr)/2;
    if(capacitateBuna(mij) == true){
      rasp = mij; /// rasp = capacitatea curenta
      dr = mij - 1;
    }
    else
      st = mij + 1;
  }
  return rasp;
}
int main()  {

  int volmax=0;
  int volmin=0;
  fin>>n>>k;
  for(int i=1; i<=n; i++){
    fin>>v[i];
    volmax=volmax+v[i];
    if(volmin<=v[i]){
      volmin=v[i];
    }
  }
  fout<<cb(volmin, volmax);

  return 0;
}