Pagini recente » Cod sursa (job #853400) | Cod sursa (job #637416) | Cod sursa (job #2685445) | Cod sursa (job #201996) | Cod sursa (job #3191570)
//https://www.infoarena.ro/problema/transport
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k;
bool testCapacity(int v[], int maxCapacity){
int transportsNo = 1;
int sum = 0;
for(int i = 0; i < n ; i ++){
sum += v[i];
if(sum > maxCapacity){
sum = v[i];
transportsNo++;
if(transportsNo > k)
return false;
}
}
return true;
}
int main(){
in >> n >> k;
int v[n];
for(int i = 0 ; i < n ; i ++){
in >> v[i];
}
//Binary Search
int left = v[0];
int right = INT_MAX;
while(left < right){
int mid = (left + right) /2;
if(testCapacity(v, mid)){
right = mid;
}else{
left = mid + 1;
}
}
out << left;
}