Pagini recente » Cod sursa (job #3253542) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #1558697) | Cod sursa (job #2544915) | Cod sursa (job #569458)
Cod sursa(job #569458)
#include <stdio.h>
const int maxn=16005;
int i,N,K,max,S,C,v[maxn];
void citire()
{
scanf("%d %d",&N,&K);
for(i=1;i<=N;i++)
{
scanf("%d",&v[i]);
if(v[i]>max) max=v[i];
S+=v[i];
}
}
int nr_tr(int c)
{
int Sp=0,nr=0; i=1;
while(i<=N)
{
for(Sp=0;Sp+v[i]<=c && i<=N;i++)
Sp+=v[i];
nr++;
if(nr>K) return K+1;
}
return nr;
}
void cb()
{
int st=max, dr=S;
int m=st+(dr-st)/2;
while(st<dr)
{
if(nr_tr(m)<=K)
dr=m;
else st=m+1;
C=dr;
m=st+(dr-st)/2;
}
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
citire();
cb();
printf("%d",C);
}