Pagini recente » Cod sursa (job #1040102) | Cod sursa (job #2121933) | Borderou de evaluare (job #1567668) | Cod sursa (job #2658323) | Cod sursa (job #2513678)
//
// 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, capacitate;
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 main() {
f>>n>>k;
for(int i=1;i<=n;i++){
f>>stiva[i];
if(maxi<stiva[i]) maxi=stiva[i];
}
int st=maxi, dr=16000;
int m;
while(st<=dr){
m=(st+dr)/2;
if(calcul_capacitate(m, n, k, stiva)==1){
capacitate=m;
dr=m-1;
}
else st=m+1;
}
g<<capacitate;
return 0;
}