Pagini recente » Cod sursa (job #470176) | Autentificare | Cod sursa (job #3290278) | Cod sursa (job #1904079) | Cod sursa (job #1592189)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16003];
int n,k;
bool verif(int V, int st, int am) {
int cap = 0;
if(st >= n && am == k)
return 1;
if(am > k) {
return 0;
}
while(true) {
if(cap + v[st] > V || st > n)
break;
cap += v[st];
st++;
}
return verif(V, st, am+1);
}
int bin(long st, long dr) {
long mid = (st+dr)/2;
bool ve = verif(mid-1, 0, 0);
bool ve2 = verif(mid, 0, 0);
if(!ve && ve2)
return mid;
if(!ve && !ve2)
return bin(mid-1, dr);
if(ve && ve2)
return bin(st, mid+1);
}
int main() {
in >> n >> k;
int V = 0;
for(int i = 0; i < n; i++) {
in >> v[i];
if(v[i] > V)
V = v[i];
}
out << bin(0, 2000000);
/*while(true) {
if(verif(V, 0, 0)) {
out << V;
return 0;
}
V++;
}*/
// cout << verif(12313, 0, 0);am == k-1
return 0;
}