Pagini recente » Profil LucianT | Cod sursa (job #2056522) | Cod sursa (job #2842891) | Cod sursa (job #164083) | Cod sursa (job #1100056)
#include<cstdio>
using namespace std;
int c,n,k,s,j,v[16001];
bool ok(int q)
{
int s,i,nr;
s=0;
nr=1;
for(i=1;i<=n;i++)
{
if(s+v[i]<=q) s+=v[i];
else if(v[i]<=q)
{
nr++;
s=v[i];
}
else return 0;
}
if(nr<=k) return 1;
else return 0;
}
int cautbin(int st,int dr)
{
if(st==dr) return st;
int med;
med=(st+dr)/2;
if(ok(med)) return cautbin(st,med);
else return cautbin(med+1,dr);
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(j=1;j<=n;j++)
{
scanf("%d",&v[j]);
s+=v[j];
}
printf("%d",cautbin(1,s));
}