Pagini recente » Cod sursa (job #1117237) | Cod sursa (job #2421829) | Cod sursa (job #2265886) | Cod sursa (job #3244422) | Cod sursa (job #677877)
Cod sursa(job #677877)
#include <cstdio>
using namespace std;
const int nmax=16005;
int sol,a[nmax],sum,n,k;
void read()
{ int i;
freopen("transport.in","r",stdin); scanf("%d %d\n",&n,&k);
for(i=1;i<=n;++i)
{ scanf("%d\n",&a[i]); sum+=a[i]; }
fclose(stdin);
}
void binary_search()
{ int st,dr,mij,nr,s,i;
bool e;
st=0; dr=sum;
while(st<=dr)
{
mij=(st+dr)/2;
nr=0; s=0; e=true;
for(i=1;i<=n;++i)
{
if(a[i]>mij)e=false;
if(s+a[i]<=mij)s+=a[i];
else {
++nr; s=a[i];
}
}
if(s>0)++nr;
if(e==false)st=mij+1;
else {
if(nr<=k){
sol=mij;
dr=mij-1;
}
else st=mij+1;
}
}
}
int main()
{
sum=0;
read();
sol=0;
binary_search();
freopen("transport.out","w",stdout); printf("%d",sol); fclose(stdout);
return 0;
}