Pagini recente » Cod sursa (job #1876375) | Cod sursa (job #2930172) | Cod sursa (job #2147296) | Cod sursa (job #1548233) | Cod sursa (job #3160780)
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int minn, maxx, k;
int m, v[16000];
int nurofen (int n){
int sum = 0, knt = 0;
for (int i = 0; i < m; ++i){
if (sum + v[i] > n){
++knt;
sum = v[i];
}
else{
sum += v[i];
}
}
return knt;
}
int cautare (){
int st = minn;
int dr = maxx;
int sol;
while (st <= dr){
int mid = (st + dr) / 2;
if (nurofen (mid) > k){
st = mid + 1;
}
else if (nurofen (mid) < k){
sol = mid;
dr = mid - 1;
}
else{
return mid;
}
}
return sol;
}
int main()
{
cin >> m >> k;
for (int i = 0; i < m; ++i){
cin >> v[i];
maxx += v[i];
minn = max (minn, v[i]);
}
cout << cautare() + 1;
return 0;
}