Pagini recente » Cod sursa (job #2224905) | Cod sursa (job #2695086) | Cod sursa (job #2725446) | Cod sursa (job #1474014) | Cod sursa (job #340517)
Cod sursa(job #340517)
#include <stdio.h>
#define INF 256000001
#define ll long
#define Nmax 16005
ll sum;
int a[Nmax];
int n,k,i,rez,max;
int numar(int x){
int i; int sum=0,nrcam=1;
for(i=1; i<=n ; ++i){
if( sum + a[i] <=x) sum+=a[i];
else{ sum=a[i]; nrcam++; }
}
if(nrcam <=k )return 1;
return -1;
}
int caut_bin(int l,int r){
int m,rez,x;
while(l<=r){
m=l+(r-l)/2;
x = numar(m);
if(x != -1){ rez=m; r=m-1; }
else l=m+1;
}
return rez;
}
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
max=0;
for(i=1;i<=n;++i){
scanf("%d",&a[i]);
if(a[i] > max) max=a[i];
}
rez=caut_bin(max,INF);
printf("%d\n",rez);
fclose(stdin); fclose(stdout);
return 0;
}