Pagini recente » Cod sursa (job #2208784) | Cod sursa (job #1104664) | Cod sursa (job #2701840) | Cod sursa (job #948841) | Cod sursa (job #2594864)
#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(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+1)<=sum) pmax++;
rez=(1<<pmax);
for(int p=pmax; p>=0; p--)
if(posibil(rez-(1<<p))) rez-=(1<<p);
g << rez;
return 0;
}