Pagini recente » Cod sursa (job #3234729) | Cod sursa (job #265102) | Cod sursa (job #2660124) | Cod sursa (job #2546203) | Cod sursa (job #2658287)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16001], n, k, i;
bool secventa(int x) {
int nrtrans = 0, s = 0;
for(i = 1; i <= n; i++) {
s += v[i];
if(v[i] > x) //daca gasim o saltea care nu incape;
return 0;
if(s > x) {
s = v[i];
nrtrans++;
}
}
if(s > 0)
nrtrans++;
return (nrtrans <= k);
}
int CautareBinara() {
int st = 1, dr = 32000, x = 1;
while(st <= dr) {
int mid = (st + dr) / 2;
if(secventa(mid) == 1) {
dr = mid - 1;
x = mid;
}
else st = mid + 1;
}
return st;
}
int main() {
cin >> n >> k;
for(i = 1; i <= n; i++)
cin >> v[i];
cout << CautareBinara();
return 0;
}