Pagini recente » Cod sursa (job #2642262) | Cod sursa (job #1073919) | Cod sursa (job #733179) | Cod sursa (job #2787723) | Cod sursa (job #2289873)
#include <stdio.h>
using namespace std;
int nr_trans(int *v, int n, int capacitate) {
int numar_transporturi = 0, suma;
for (int i = 0; i < n;) {
suma = 0;
if (v[i] > capacitate)
return 16001;
while (suma + v[i] <= capacitate && i < n) {
suma += v[i];
i++;
}
numar_transporturi++;
}
return numar_transporturi;
}
int caut(int *v, int n, int k) {
int pos = 1 << 30, i;
for (i = (1 << 30) - 1; pos; pos >>= 1)
if (i - pos >= 0 && nr_trans(v, n, i - pos) <= k)
i -= pos;
return i;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int n, k, v[16000];
scanf("%d %d", &n, &k);
for (int i = 0; i < n; i++)
scanf("%d", &v[i]);
printf("%d", caut(v, n, k));
return 0;
}