Pagini recente » Cod sursa (job #774709) | Cod sursa (job #544737) | Cod sursa (job #209078) | Cod sursa (job #1325917) | Cod sursa (job #1268882)
#include<cstdio> using namespace std; int v[16001],n,k; bool ok(int C){ int tr,s,i; tr=s=0; for(i=1;i<=n;i++){ if(v[i]>C) return 0; s=s+v[i]; if(s>C) tr++,s=v[i]; } if(s>0) tr++; return tr<=k; } int bs(int st,int dr) { int med,last=dr+1; while(st<=dr) { med=dr-((dr-st)>>1); if(ok(med)) last=med,dr=med-1; else st=1+med; } return last; } int main(){ freopen("transport.in","r",stdin); freopen("transport.out","w",stdout); scanf("%d%d",&n,&k); int i,smax=0; for(i=1;i<=n;i++){ scanf("%d",&v[i]); smax=smax+v[i]; } printf("%d\n",bs(1,smax)); }