Pagini recente » Istoria paginii runda/oni2008 | Cod sursa (job #1987243) | Cod sursa (job #733642) | Cod sursa (job #1349298) | Cod sursa (job #2081701)
#include <stdio.h>
using namespace std;
FILE* fin;
FILE* fout;
int n, k, V[16000], Max, low, high, mid, C;
int requiredTransports(int v[], int n, int x)
{
int retval = 0;
int i = 0;
while(i < n)
{
int sum = 0;
while(sum + v[i] <= x && i < n)
{
sum += v[i];
++i;
}
++retval;
}
return retval;
}
int main()
{
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
int s = 0;
fscanf(fin, "%d %d", &n, &k);
for(int i = 0; i < n; ++i)
{
fscanf(fin, "%d", V + i);
s += V[i];
if(V[i] > Max)
Max = V[i];
}
low = Max;
high = s;
while(low != high)
{
mid = (low + high) / 2;
if(requiredTransports(V, n, mid) <= k)
{
C = mid;
high = mid;
}
else {
low = mid + 1;
}
}
fprintf(fout, "%d", C);
return 0;
}