Pagini recente » Cod sursa (job #2407455) | Cod sursa (job #247492) | Cod sursa (job #484802) | Cod sursa (job #2500908) | Cod sursa (job #800339)
Cod sursa(job #800339)
#include<stdio.h>
int n,k,v[17000],min;
int transport(int c)
{
int s=v[1];
int dr=1;
for(int i=2;i<=n;i++)
{
if(v[i]>c)
return k+1;
if(v[i]+s>c)
{
s=v[i];
dr++;
}
else
s+=v[i];
}
return dr;
}
void cauta(int inf,int sup)
{
if(inf<=sup)
{
int mij=(sup+inf)/2;
if(transport(mij)>k)
cauta(mij+1,sup);
else
{
min=mij;
cauta(inf,mij-1);
}
}
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int suma=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;scanf("%d",&v[i]),i++)
suma+=v[i-1];
cauta(1,suma);
printf("%d",min);
return 0;
}