Pagini recente » Autentificare | Cod sursa (job #2800824) | Cod sursa (job #875056) | Cod sursa (job #3282037) | Cod sursa (job #2723912)
#include <iostream>
#include <stdio.h>
#define NMAX 16000
using namespace std;
int n, k, v[NMAX + 1];
FILE *fin = fopen ("transport.in","r");
FILE *fout = fopen ("transport.out", "w");
bool verif (int a){
int s = 0;
int cnt = 1;
for (int i = 0; i < n; i++){
if (s + v[i] <= a)
s += v[i];
else{
cnt ++;
if (a >= v[i])
s = v[i];
else
return 0;
}
}
if (cnt <= k)
return 1;
return 0;
}
int main(){
int n, k;
fscanf (fin, "%d%d", &n, &k);
for (int i = 0; i < n; i++){
fscanf (fin, "%d", &v[i]);
}
int st = 1;
int dr = n * NMAX;
int mid;
int rez;
while (st < dr){
mid = (st + dr) / 2;
if (verif (mid) == 0)
st = mid + 1;
else{
dr = mid - 1;
rez = mid;
}
}
fprintf (fout, "%d", rez);
return 0;
}