Pagini recente » Cod sursa (job #2194002) | Cod sursa (job #2489441) | Cod sursa (job #533988) | Cod sursa (job #2386065) | Cod sursa (job #1498703)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 16000
int v[MAXN];
int n, k;
inline int inc_camion(int c) {
int i=0, s=0, nr_trans=0;
while(i<n) {
s+=v[i];
if(s>c) {
nr_trans++;
s=v[i];
}
i++;
}
if(s>0)
nr_trans++;
return nr_trans;
}
int cautare_binara(int st,int dr) {
int mij, x, a;
while(st<=dr) {
mij=(st+dr)/2;
x=inc_camion(mij);
if(x>k)
st=mij+1;
else {
dr=mij-1;
a=mij;
}
}
return a;
}
int main()
{
int s, max, i;
FILE *fi, *fo;
fi = fopen("transport.in", "r");
fo = fopen("transport.out", "w");
fscanf(fi, "%d%d", &n, &k);
s=0;
max=1;
for(i=0; i<n; i++) {
fscanf(fi, "%d", &v[i]);
s+=v[i];
if(v[i]>max)
max=v[i];
}
fprintf(fo, "%d", cautare_binara(max, s));
fclose(fi);
fclose(fo);
return 0;
}