Pagini recente » Cod sursa (job #198491) | Cod sursa (job #1471059) | Cod sursa (job #1243563) | Cod sursa (job #892782) | Cod sursa (job #1341410)
#include <cstdio>
using namespace std;
int n, li, ls, m, s, sol, a[16010], i, Max, nr, k;
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d\n",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d ",&a[i]);
if(a[i]>Max) Max=a[i];
s+=a[i];
}
li=Max;
ls=s;
m=(li+ls)/2;
while(li<=ls)
{
s=0;
nr=0;
for(i=1;i<=n;i++)
{
s+=a[i];
if(s>=m&&i!=n) nr++, s=a[i];
else if(i==n) nr++;
}
if(s-m>0) nr++;
if(nr<=k)
{
sol=m;
ls=m-1;
m=(li+ls)/2;
}
else
{
li=m+1;
m=(li+ls)/2;
}
}
printf("%d\n",sol);
return 0;
}