Pagini recente » Cod sursa (job #1214612) | Cod sursa (job #469156) | Cod sursa (job #268626) | Cod sursa (job #1222167) | Cod sursa (job #2119299)
#include <iostream>
#include <fstream>
#define INF 256000
#define NMax 16005
using namespace std;
ifstream f ("transport.in" );
ofstream g ("transport.out");
int n, k, v[NMax];
int binSearch(int left, int right)
{
int mid = 0, transp = 1, s = 0;
while(left <= right){
mid = (left + right) / 2;
transp = 1;
s = 0;
for(int i = 1; i <= n; i++){
if(s + v[i] <= mid) s += v[i];
else{
++transp;
s = v[i];
}
}
if(transp <= k){
right = mid - 1;
}
else if(transp > k){
left = mid + 1;
}
}
return left;
}
int main()
{
f >> n >> k;
int s = 0, maxx = 0;
for(int i = 1; i <= n; i++){
f >> v[i];
s += v[i];
maxx = max(maxx, v[i]);
}
int ans = binSearch(maxx, s);
g << ans << '\n';
f.close();
g.close();
return 0;
}