Pagini recente » Cod sursa (job #2435774) | Cod sursa (job #2719351) | Cod sursa (job #2712666) | Cod sursa (job #1945261) | Cod sursa (job #817167)
Cod sursa(job #817167)
#include <stdio.h>
#define MAX 16000
FILE *fin,*fout;
int n,k;
int v[MAX];
int max=0,min=-1;
int ok(int kk){
int nr=0,cont=0;
int verif=0;
int sum=0;
while(cont<n){
verif=0;
sum=0;
while(verif==0){
if(sum+v[cont]<=kk){
sum+=v[cont];
cont++;
}
else
verif=1;
}
nr++;
}
return nr;
}
int bin(){
int m;
while(min<(max-1)){
m=(max+min)/2;
if(ok(m)<=k)
max=m;
else
min=m;
}
return min+1;
}
int main(){
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
int i;
fscanf(fin,"%d%d",&n,&k);
for(i=0;i<n;i++){
fscanf(fin,"%d",&v[i]);
if(v[i]>min)
min=v[i];
max+=v[i];
}
min--;
max++;
int rez=bin();
fprintf(fout,"%d",rez);
fclose(fin);
fclose(fout);
return 0;
}