Pagini recente » Cod sursa (job #1553114) | Cod sursa (job #610325) | Cod sursa (job #2472563) | Cod sursa (job #2832079) | Cod sursa (job #799599)
Cod sursa(job #799599)
#include <stdio.h>
using namespace std;
int n, k, x, v[17000];
int is_too_big(int middle)
{
int i=1, bag=0, nr=0;
for(i=1; i<=n; i++)
{
bag += v[i];
if(bag > middle)
{
nr++;
bag = 0;
bag += v[i];
}
if(nr >= k)
return 0;
}
return 1;
}
int binary_search(int left, int right)
{
int middle = (left+right)/2;
if(left == right)
return right;
if(is_too_big(middle))
binary_search(left,middle-1);
else
binary_search(middle+1,right);
}
int main()
{
FILE *f=fopen("transport.in", "r");
FILE *g=fopen("transport.out", "w");
int i, s=0, max=0;
//Read
fscanf(f, "%d %d", &n, &k);
for(i=1; i<=n; i++)
{
fscanf(f, "%d", &v[i]);
s += v[i];
if(v[i] > max)
max = v[i];
}
//Print
fprintf(g, "%d", binary_search(max,s));
}