Pagini recente » Cod sursa (job #2466524) | Cod sursa (job #251112) | Cod sursa (job #2167140) | Cod sursa (job #1763794) | Cod sursa (job #211983)
Cod sursa(job #211983)
#include <stdio.h>
int v[16000],n,nrt,c,max,sumav;
int sol=1<<30;
void citire()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&nrt);
for (int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
if (v[i]>max)
max=v[i];
sumav+=v[i];
}
}
int valid(int x){
int l=n,t=0,s;
while(l){
s=0;
while(l && s+v[l]<=x){
s+=v[l];
l--;
}
if(!s) return 0;
t++;
}
if(t<=nrt){
if(x<sol) sol=x;
return 1;
}
return 0;
}
void cautbin()
{
int st,dr,m;
st=max; dr=sumav;
while (st<dr)
{
m=(st+dr)/2;
if(valid(m) )
dr=m;
else
st=m+1;
}
printf("%d ",sol);
}
int main()
{
citire();
cautbin();
}