Pagini recente » Cod sursa (job #2665527) | Cod sursa (job #1322309) | Cod sursa (job #2332141) | Cod sursa (job #3155275) | Cod sursa (job #2594873)
#include <bits/stdc++.h>
using namespace std;
int n,k,v[16010];
bool posibil(int vol) {
int nrt = 1, s = 0;
for(int i=1; i<=n; i++) {
if(v[i]>vol) return false;
else if(s+v[i]<=vol)
s+=v[i];
else {
nrt++;
s=v[i];
}
}
if(nrt<=k) return true;
return false;
}
int main () {
ifstream f ("transport.in");
ofstream g ("transport.out");
int ma = 0,sum = 0;
f >> n >> k;
for(int i=1; i<=n; i++) {
f >> v[i];
ma=max(v[i],ma);
sum+=v[i];
}
int pmax = 0;
int rez;
while( (1<<pmax) <=sum) pmax++;
rez=(1<<pmax);
for(int p=pmax; p>=0; p--)
if(posibil(rez-(1<<p))) rez-=(1<<p);
g << rez;
return 0;
}