Pagini recente » Cod sursa (job #1326413) | Cod sursa (job #2840861) | Cod sursa (job #537535) | Cod sursa (job #2188533) | Cod sursa (job #1278750)
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
#define MaxN 16001
int V[MaxN];
int n,k,iMax,lmax,lmin,i,nrt,c,l1,l2,lm,m;
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
iMax=0;
lmax=0;
scanf("%d%d",&n,&k);
for (i=1; i<=n; i++)
{
scanf("%d",&V[i]);
}
for(i=1;i<=n;i++)
{
lmax=lmax+V[i];
if(V[i]>iMax)
{
iMax=V[i];
}
}
lmin=iMax;
l1=lmin;
l2=lmax;
while (l1<=l2)
{
c=0;
nrt=1;
m=(l1+l2)/2;
for (i=1; i<=n; i++)
{
if (c+V[i]<=m)
{
c=c+V[i];
}
else
{
nrt++;
c=V[i];
}
}
if (nrt<=k)
{
l2=m-1;
lm=m;
}
else
{
l1=m+1;
}
}
printf("%d",lm);
return 0;
}