Pagini recente » Cod sursa (job #3036435) | Cod sursa (job #2613949) | Cod sursa (job #2782537) | Cod sursa (job #333911) | Cod sursa (job #1415824)
#include <fstream>
#include <cstdio>
#define NM 16005
using namespace std;
int n,k,i,mx,v[NM];
int sum,sum2,nr,nr2;
int mid,mid2,be,en;
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i=1; i<=n; i++)
{
scanf("%d", &v[i]);
mx=max(mx, v[i]);
sum+=v[i];
}
sum/=k;
be=max(sum, mx);
en=NM*NM;
while (be<=en)
{
mid=(be+en) / 2;
mid2=mid-1;
nr=nr2=1;
sum=sum2=0;
for (i=1; i<=n; i++)
{
if (sum+v[i]>mid)
{
nr++;
sum=v[i];
}
else
sum+=v[i];
if (sum2+v[i]>mid2)
{
nr2++;
sum2=v[i];
}
else
sum2+=v[i];
}
if (nr>=k && nr2<k)
break;
else
{
if (nr>=k)
be=mid+1;
else
en=mid-1;
}
}
printf("%d\n", mid);
return 0;
}