Pagini recente » Rating Pavaluc Diana (dianapavaluc) | Cod sursa (job #2481460) | Cod sursa (job #2817927) | Cod sursa (job #1690721) | Cod sursa (job #1415872)
#include <fstream>
#include <cstdio>
#define NM 16005
using namespace std;
int n, k, i, mx, v[NM];
int mid, sum, be, en;
bool ok;
bool verif (int cap)
{
int sum = 0;
int cnt = 0;
// cap = 2
// saltele: 1 1 3
for (int i=1; i<=n; i++)
if (sum + v[i] > cap)
{
cnt++;
sum = v[i];
if (v[i] > cap)
return false;
}
else
sum += v[i];
cnt++;
if (cnt <= k)
return true;
else
return false;
}
int cautbin()
{
be=1;
en=NM*NM;
int ans = NM*NM+1;
while (be <= en)
{
mid = (be + en)/2;
if (verif(mid) == true) // daca capacitatea e mid si pot sa transport toate in K transporturi (sau mai putine)
{
ans = mid;
en = mid - 1;
}
else
be = mid + 1;
}
return ans;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i=1; i<=n; i++)
scanf("%d", &v[i]);
printf("%d\n", cautbin());
return 0;
}