Pagini recente » Cod sursa (job #1505683) | Cod sursa (job #2081104) | Cod sursa (job #2525064) | Cod sursa (job #1953480) | Cod sursa (job #1200067)
#include <stdio.h>
#define MAXNK 16000
int v[MAXNK];
char bun(int nr, int n, int k){
int i, sum = 0;
for(i = 0; i < n; i++){
if(nr < v[i]) return 0;
if(sum + v[i] > nr){
k--;
sum = v[i];
}
else{
sum += v[i];
}
}
if(k < 0 || ( k == 0 && sum != 0 )) return 0;
return 1;
}
int main(){
FILE *in = fopen("transport.in", "r");
int n, k;
fscanf(in, "%d%d", &n, &k);
int i;
for(i = 0; i < n; i++){
fscanf(in, "%d", &v[i]);
}
fclose(in);
int rez = 0, pas = 1 << 30;
while(pas > 0){
if(!bun(rez + pas, n, k)) rez += pas;
pas /= 2;
}
FILE *out = fopen("transport.out", "w");
fprintf(out, "%d", rez + 1);
fclose(out);
return 0;
}