Pagini recente » Cod sursa (job #2940348) | Cod sursa (job #1674550) | Cod sursa (job #2372182) | Cod sursa (job #3217124) | Cod sursa (job #3160791)
#include <fstream>
using namespace std;
ifstream cin ("in.in");
ofstream cout ("transport.out");
int minn, maxx;
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 + 1;
}
int cautare (int k){
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;
}
}
return sol;
}
int main()
{
int k;
cin >> m >> k;
for (int i = 0; i < m; ++i){
cin >> v[i];
maxx += v[i];
minn = max (minn, v[i]);
}
cout << cautare(k);
return 0;
}