Pagini recente » Cod sursa (job #1296310) | Cod sursa (job #244597) | Cod sursa (job #1639564) | Cod sursa (job #281719) | Cod sursa (job #967110)
Cod sursa(job #967110)
#include <cstdio>
int v[16001];
int n, k;
int nr_trans(int capacitate)
{
int i, cnt=0, crt=0;
for(i=1; i<=n; i++)
{
if(crt+v[i]<=capacitate)
crt+=v[i];
else
{
crt=v[i];
cnt++;
if(cnt>k)
return 1;
}
}
return 0;
}
int main ()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &k);
int i, max=0, suma=0;
for(i=1; i<=n; i++)
{
scanf("%d", &v[i]);
max=(max<v[i])? v[i]:max;
suma+=v[i];
}
int stanga, dreapta, mijloc, ult_elem, nr;
stanga=max;
dreapta=suma+1;
ult_elem=suma;
while(stanga<dreapta)
{
mijloc=(stanga+dreapta)/2;
nr=nr_trans(mijloc);
if(nr==0)
{
dreapta=mijloc-1;
ult_elem=mijloc;
}
else
stanga=mijloc+1;
}
printf("%d\n", ult_elem);
return 0;
}