Pagini recente » Cod sursa (job #1962623) | Cod sursa (job #2929177) | Cod sursa (job #2258901) | Cod sursa (job #2949722) | Cod sursa (job #799602)
Cod sursa(job #799602)
#include <stdio.h>
using namespace std;
int n, k, x, v[17000];
int ok(int middle)
{
int i, nr=1, s=v[1];
for(i=2;i<=n;i++)
if(s+v[i] <= middle)
s += v[i];
else
{
s = v[i];
nr++;
}
return nr<=k;
}
int binary_search(int left, int right)
{
int middle, last;
while(left <= right)
{
middle = (left+right)/2;
if(ok(middle))
{
last = middle;
right = middle-1;
}
else
left = middle+1;
}
return last;
}
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));
}