Pagini recente » Cod sursa (job #842817) | Cod sursa (job #842835) | Cod sursa (job #2248374) | Cod sursa (job #12602) | Cod sursa (job #2551787)
#include <stdio.h>
#include <stdlib.h>
FILE *fin , *fout;
int v[16000];
int f(int nr, int n, int k) {
int s=0,tr=0,i;
for(i=0;i<n;i++) {
if(v[i]>nr) {
return k+1;
}
if(s+v[i]<=nr) {
s+=v[i];
}
else {
tr++;
s=v[i];
}
}
return tr+1;
}
int main() {
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
int n,k,i,st,dr,mij,x;
fscanf(fin,"%d%d",&n,&k);
for(i=0;i<n;i++) {
fscanf(fin,"%d",&v[i]);
}
st=1;
dr=256000000;
while(st<=dr) {
mij=(st+dr)/2;
if(f(mij,n,k)<=k) {
dr=mij-1;
x=mij;
}
else {
st=mij+1;
}
}
fprintf(fout,"%d\n",x);
fclose(fin);
fclose(fout);
return 0;
}