Pagini recente » Cod sursa (job #355694) | Cod sursa (job #685766) | Cod sursa (job #895025) | Cod sursa (job #846974) | Cod sursa (job #2669205)
#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;
else break;
mijloc--;
}
printf("%ld",rasp);
return 0;
}