Pagini recente » Cod sursa (job #1337282) | Cod sursa (job #2073130) | Cod sursa (job #2901330) | Cod sursa (job #3167068) | Cod sursa (job #2091106)
#include <cstdio>
using namespace std;
int lg;
int n, k, a[16001];
int numarare(int x)
{
int nr=0,s=0;
for(int i=1; i<=n; i++)
{
s+=a[i];
if(s>x)
{
s=a[i];
nr++;
}
else if(s==x)
{
s=0;nr++;
}
}
if(s!=0)
nr++;
if(nr<=k)
return 1;
return 0;
}
long long cautbin(long long lg, long long vmin)
{
long long i, s=0;;
for(i=268435456;lg!=0;lg>>=1)
if(i-lg>=vmin && numarare(i-lg)==1)
i-=lg;
return i;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
long long vmin=-1;
for(int i=1; i<=n; i++)
{
scanf("%d", &a[i]);
if(a[i]>vmin)
vmin=a[i];
}
long long lg=268435456;
printf("%lld",cautbin(lg,vmin));
return 0;
}