Pagini recente » Cod sursa (job #1245984) | Istoria paginii runda/training_day_3 | Rating Pintea Tudor (tudorpintea) | Cod sursa (job #2072892) | Cod sursa (job #1749200)
#include <stdio.h>
int v[16000],n,k;
int r_cond (int c_sup)
{
int i = 1, intervale = 0, s;
while ( i <= n)
{
s = 0;
while ( s < c_sup)
{
s += v[i];
++i;
}
if( s > c_sup)
--i;
++intervale;
if(intervale > k)
return 0;
}
return 1;
}
int caut_bin (int a, int b)
{
int mid;
while ( a <= b)
{
mid = (a + b) / 2;
if (r_cond(mid))
{
if( !r_cond(mid - 1))
return mid;
else
b = mid + 1;
}
if( !r_cond(mid))
a = mid - 1;
else
b = mid + 1;
}
return 0;
}
int main()
{
int s = 0, max = 0;
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++)
{
scanf("%d", &v[i]);
s += v[i];
if( max < v[i])
max = v[i];
}
printf("%d\n", caut_bin(max, s));
return 0;
}