Pagini recente » Cod sursa (job #2530946) | Cod sursa (job #3266818) | Cod sursa (job #62112) | Cod sursa (job #207649) | Cod sursa (job #1581873)
#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(st<dr){
voln=(st+dr)/2;
t=verif(voln);
if(t==1){
st=voln+1;
}else if(t==-1){
dr=voln-1;
}else{
dr--;
}
}
printf("%d",st);
return 0;
}