Pagini recente » Cod sursa (job #2833012) | Cod sursa (job #44120) | Cod sursa (job #310635) | Cod sursa (job #1172665) | Cod sursa (job #1495060)
#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++;
}
i++;
}
if(con<=k)
return 1;
return 0;
}
int main(){
FILE*fi,*fout;
int rez,pas,n,k,i,s;
fi=fopen("transport.in" ,"r");
fout=fopen("transport.out" ,"w");
fscanf(fi,"%d%d" ,&n,&k);
s=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;
}