Pagini recente » Cod sursa (job #1186689) | Cod sursa (job #2182892) | Cod sursa (job #1568368) | Cod sursa (job #2889939) | Cod sursa (job #1495673)
#include <stdio.h>
#define N_MAX 16002
using namespace std;
FILE *f, *g;
int v[N_MAX];
int sPart[N_MAX];
int n, k;
int max = -1;
//bool found = false;
void citire();
int main()
{
int st, dr, m;
int t, s;
int mMax;
int i;
citire();
st = max;
dr = sPart[n];
while (st <= dr){
m = (st + dr)/2;
//t = transporta(m);
t = 0;
for (i = 1; i <= n;){
s = 0;
while (s + v[i] <= m && i <= n){
s += v[i];
i++;
}
t++;
}
if (t <= k){
mMax = m;
dr = m - 1;
}else
st = m + 1;
}
fprintf(g, "%d\n", mMax);
fclose(g);
return 0;
}
void citire(){
f = fopen("transport.in", "r");
g = fopen("transport.out", "w");
fscanf(f, "%d%d", &n, &k);
for (int i = 1; i <= n; ++i){
fscanf(f, "%d", &v[i]);
sPart[i] = sPart[i-1] + v[i];
if (v[i] > max)
max = v[i];
}
fclose(f);
}