Pagini recente » Clasament aisimlocala | Cod sursa (job #2371978) | Cod sursa (job #366637) | Cod sursa (job #2740822) | Cod sursa (job #594211)
Cod sursa(job #594211)
#include <cstdio>
using namespace std;
int a[16005],n,k;
int verif(int cap){
int i=0,s,nr=0;
while (i < n){
s=0;
while (i < n && s+a[i] <= cap)
s+=a[i++];
nr++;
}
return nr;
}
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d",&n);
scanf("%d",&k);
int max=0;
long long s=0;
for (int i=0; i<n; ++i){
scanf("%d",a+i);
s+=a[i];
max=a[i]>max?a[i]:max;
}
while (max <= s){
int cap=max+(s-max)/2;
int nrt=verif(cap);
if (nrt == k){
while (nrt == k)
nrt=verif(--cap);
printf("%d",cap+1);
return 0;
}
else
if (nrt > k)
max=cap+1;
else
s=cap-1;
}
return 0;
}