Pagini recente » Cod sursa (job #2331192) | Cod sursa (job #2457746) | Cod sursa (job #31152) | Cod sursa (job #693552) | Cod sursa (job #1581876)
#include <stdio.h>
#include <stdlib.h>
int v[16100];
int n,k,max;
int verif(int vol){
int i=0,nrt=0,s=0;
for(i=0;i<n;i++){
s+=v[i];
if(s>vol){
nrt++;
s=v[i];
}
}
if(s<vol){
nrt++;
}
if(nrt==k){
return 0;
//perfect vis
}else if(nrt>k){
return 1;
// nevoie volum mai mare
}else{
return -1;
//scadere volum
}
}
int main(){
int i;
int voln,t;
int dr,st;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=0;i<n;i++){
scanf("%d",&v[i]);
if(v[i]>max){
max=v[i];
}
}
dr=n*max;
st=max;
while(dr-st>1){
voln=(st+dr)/2;
t=verif(voln);
if(t==1){
st=voln;
}else if(t==-1){
dr=voln;
}else{
dr--;
}
}
printf("%d",dr);
return 0;
}