Pagini recente » Cod sursa (job #1749391) | Cod sursa (job #1146029) | Cod sursa (job #1283471) | Cod sursa (job #2649561) | Cod sursa (job #703587)
Cod sursa(job #703587)
#include<cstdio>
using namespace std;
long long int n,k,v[16010],dmax,dmin,x,verif,j,d,verifb,rasp,ok;
bool verifk (long long int a)
{ int ans = 1;
long long 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]);
/*
if (ok==0){
dmin=v[j];
ok=1;
}
if (dmin>v[j])
dmin=v[j];
dmax=dmax+v[j];
*/
}
dmin = 0 , dmax = 100000000000000LL;
rasp=-1;
while (dmin<=dmax){
d=(dmin+dmax)/2;
verif=verifk(d);
if (verif==1){
rasp = d;
dmax = d - 1;
}
else
dmin = d + 1;
}
printf("%lld",rasp);
return 0;
}