Pagini recente » Cod sursa (job #1722641) | Cod sursa (job #2261912) | Cod sursa (job #2817412) | Cod sursa (job #1377830) | Cod sursa (job #2669206)
#include <bits/stdc++.h>
using namespace std;
long long n,maxi,mini,st,k,dr,a[16001];
long long numar(long long x)
{
long long i=1,t=0,sum=0;
while(i<=n)
{
sum=0;
while(sum+a[i]<=x&&i<=n)
{
sum+=a[i];
i++;
}
t++;
}
return t;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
scanf("%ld",&a[1]);
mini=a[1];
maxi=a[1];
long long i;
for(i=2; i<=n; i++)
{
scanf("%ld",&a[i]);
maxi=max(maxi,a[i]);
mini+=a[i];
}
st=maxi;
dr=mini;
long long rasp,mijloc,x;
rasp= 16000;
while(dr-st>1)
{
mijloc=st+(dr-st)/2;
x=numar(mijloc);
if(x>k) st=mijloc;
else
{
dr=mijloc;
rasp=min(rasp,mijloc);
}
}
mijloc=rasp;mijloc--;
while(mijloc>=maxi)
{
x=numar(mijloc);
if(x<=k)rasp=mijloc;
mijloc--;
}
printf("%ld",rasp);
return 0;
}