Pagini recente » Cod sursa (job #83968) | Cod sursa (job #235094) | Cod sursa (job #756225) | Cod sursa (job #2418825) | Cod sursa (job #1495064)
#include <stdio.h>
#include <stdlib.h>
int v[16001];
inline int cauta(int l,int n,int k){
int i=1,con,s;
con=1;
s=0;
while(i<=n){
if(s+v[i]<=l)
s+=v[i];
else{
s=v[i];
con++;
}
if(v[i]>l)
con=k+1;
i++;
}
if(con<=k)
return 1;
return 0;
}
int main(){
FILE*fi,*fout;
int rez,pas,n,k,i,s,max;
fi=fopen("transport.in" ,"r");
fout=fopen("transport.out" ,"w");
fscanf(fi,"%d%d" ,&n,&k);
s=0;
max=0;
for(i=1;i<=n;i++){
fscanf(fi,"%d" ,&v[i]);
s+=v[i];
}
rez=0;
for(pas=1<<30;pas;pas>>=1){
if(rez+pas<=s&&cauta(rez+pas,n,k)==0)
rez+=pas;
}
fprintf(fout,"%d" ,rez+1);
fclose(fi);
fclose(fout);
return 0;
}