Pagini recente » Cod sursa (job #1325479) | Cod sursa (job #2946408) | Cod sursa (job #2388073) | Cod sursa (job #1394972) | Cod sursa (job #364425)
Cod sursa(job #364425)
#include<fstream>
using namespace std;
int n,a[16001],d,s,k,maxim=0,v;
int nr_trans(int C)
{int i=1,contor=0,s=0;
while(i<=n)
{ if(a[i]>C) return 0;
if(s+a[i]<=C) {s+=a[i];}
else {contor++;s=a[i]; }
i++;
}
return contor+1;}
int cautbin(int x)
{
int lo, hi, mid, last = 0;
for (lo = maxim, hi = s; lo <= hi; )
{
mid = lo + (hi-lo) / 2;
if (nr_trans(mid)<=x) last = mid, hi = mid-1;
else lo = mid+1;
}
return last;
}
int main()
{freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&n,&k);
maxim=0;s=0;
for(int i=1;i<=n;i++) {scanf("%d",&a[i]);s+=a[i];if(a[i]>maxim) maxim=a[i];}
int lg,i,l,cont=0;
printf("%d",cautbin(k));
return 0;}