Pagini recente » Cod sursa (job #475380) | Cod sursa (job #2248776) | Cod sursa (job #1111865) | Cod sursa (job #3242059) | Cod sursa (job #2513674)
//
// 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];
}
}
if(transporturi>k) return false;
return true;
}
//caut binar capacitatea minima a camionului
//daca gasesc o capacitate care este ok, mai caut una care sa fie posibila
//daca capacitatea aleasa este prea mica, caut una mai mare
int cautare_binara(int n, int v[], int maxi,int k){
int st=maxi, dr=16000;
int m; int capacitate;
while(st<=dr){
m=(st+dr)/2;
if(calcul_capacitate(m, n, k, v)==1){
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, k);
return 0;
}