Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n,k;
- int ar[101];
- int f(int cap){
- int box_now=1,w_now=0;
- for(int i=1;i<=n;i++){
- if(w_now+ar[i]>cap){
- box_now++;
- w_now=0;
- }
- w_now+=ar[i];
- }
- return box_now;
- }
- int main(){
- int max_w=0,sum=0;
- scanf("%d%d",&k,&n);
- for(int i=1;i<=n;i++) {
- scanf("%d",&ar[i]);
- sum+=ar[i];
- max_w = max(max_w,ar[i]);
- }
- int l=max_w,r=sum,min_box=sum;
- while(l<=r){
- int mid=(l+r)/2;
- if(f(mid)>k){
- l++;
- }
- else {
- min_box=min(min_box,mid);
- r--;
- }
- }
- printf("%d",min_box);
- return 0;
- }
Add Comment
Please, Sign In to add comment