fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bool CanAllocated(int A[],int N,int M,int mid){
  6. int cnt=1,res=0;
  7. for(int i=0;i<N;i++){
  8. if(A[i]>mid) return false;
  9. res+=A[i];
  10. if(res>mid){
  11. cnt++;
  12. res=A[i];
  13. }
  14. if(cnt>M) return false;
  15. }
  16. return true;
  17. }
  18. //Function to find minimum number of pages.
  19. int findPages(int A[], int N, int M)
  20. {
  21. //code here
  22. // sort(A,A+N);
  23. if(N<M) return -1;
  24. int low=A[0],high=0,ans=-1;
  25. for(int i=0;i<N;i++){
  26. high+=A[i];
  27. low=min(low,A[i]);
  28. }
  29. while(low<=high){
  30. int mid=(low+high)/2;
  31. if(CanAllocated(A,N,M,mid)){
  32. ans=mid;
  33. high=mid-1;
  34. }
  35. else low=mid+1;
  36. }
  37. return ans;
  38. }
  39. int main() {
  40. int n = 4, m = 2;
  41. int A[] = {12,34,67,90};
  42. cout<<findPages(A,n,m);
  43.  
  44. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
113