Pagini recente » Cod sursa (job #1475567) | Cod sursa (job #2392631) | Cod sursa (job #1443245) | Cod sursa (job #1968473) | Cod sursa (job #687990)
Cod sursa(job #687990)
#include<cstdio>
using namespace std;
long long int n,k,v[2*10^9],d=2*10^9,dmax,dmin,x,verif,j;
bool verifk (int a)
{ int ans = 1;
int i , s = 0;
for (i=1;i<=n;i++){
if (s + v[i] > a){
s=v[i];
ans++;
if (ans>k) return false;
}
else s+=v[i];
}
return (ans <= k);
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%lld %lld",&n,&k);
for (j=1;j<=n;j++)
scanf("%lld",&v[j]);
d=d/2;
verif=verifk(d);
if (verif==1){
while (verif==1){
dmax=d;
d=d/2;
verif=verifk(d);
dmin=d;
}
verif=1;
while (verif==1){
d=dmin+(dmax-dmin)/2;
verif=verifk(d);
if (verif==1) dmax=d;
else dmin=d;
}
}
while (verif==0){
dmin++;
verif=verifk(dmin);
}
printf("%lld",dmin);
return 0;
}