Pagini recente » Cod sursa (job #117126) | Cod sursa (job #1815674) | Cod sursa (job #1578815) | Cod sursa (job #150642) | Cod sursa (job #2513663)
//
// main.cpp
// transporturi_InfoArena
//
// Created by Razvan Vranceanu on 23/12/2019.
// Copyright © 2019 Razvan Vranceanu. All rights reserved.
//
#include <fstream>
#define NAMX 16001
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, stiva[NAMX], maxi;
bool calcul_capacitate(int c, int n, int k, int v[]){
int transporturi=1, capacity=c;
for(int i=1;i<=n;i++){
if(v[i]<=capacity){
capacity-=v[i];
}
else if(v[i]>capacity){
transporturi++;
capacity=c-v[i];
//capacity-=v[i];
}
}
if(transporturi<=k) return true;
return false;
}
//rezolvare problema
int cautare_binara(int n, int v[], int maxi){
int capacitate;
int st=maxi, dr=16000;
int m;
while(st<=dr){
m=(st+dr)/2;
if(calcul_capacitate(m, n, k, v)){
capacitate=m;
dr=m-1;
}
else st=m+1;
}
return capacitate;
}
int main() {
f>>n>>k;
for(int i=1;i<=n;i++){
f>>stiva[i];
if(maxi<stiva[i]) maxi=stiva[i];
}
g<<cautare_binara(n, stiva, maxi);
return 0;
}