Pagini recente » Cod sursa (job #1943308) | Cod sursa (job #3279537) | Cod sursa (job #2774481) | Cod sursa (job #2724266) | Cod sursa (job #2119291)
#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 = 0, s = 0;
while(left <= right){
mid = (left + right) / 2;
transp = 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;
}
else{
return mid;
}
}
return left;
}
int main()
{
f >> n >> k;
for(int i = 1; i <= n; i++)
f >> v[i];
int ans = binSearch(1, INF);
g << ans << '\n';
f.close();
g.close();
return 0;
}