Pagini recente » Cod sursa (job #414748) | Cod sursa (job #207775) | Cod sursa (job #1485784) | Cod sursa (job #932097) | Cod sursa (job #3191572)
//https://www.infoarena.ro/problema/transport
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
static const int MAX_RIGHT = 16000*16000;
int n, k;
bool testCapacity(int v[],const int maxCapacity){
int transportsNo = 1;
int sum = 0;
for(int i = 0; i < n ; i ++){
sum += v[i];
if(sum > maxCapacity){
sum = v[i];
if(++transportsNo > k)
return false;
}
}
return true;
}
int main(){
in >> n >> k;
int v[n];
int max = 0;
for(int i = 0 ; i < n ; i ++){
in >> v[i];
if(v[i] > max)
max = v[i];
}
//Binary Search
int left = max;
int right = MAX_RIGHT;
while(left < right){
int mid = (left + right) /2;
if(testCapacity(v, mid)){
right = mid;
}else{
left = mid + 1;
}
}
out << left;
}