Pagini recente » Cod sursa (job #1362063) | Cod sursa (job #292701) | Cod sursa (job #818015) | Cod sursa (job #2717682) | Cod sursa (job #2658288)
#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 x;
}
int main() {
cin >> n >> k;
for(i = 1; i <= n; i++)
cin >> v[i];
cout << CautareBinara();
return 0;
}