Advertisement
Fastrail08

Allocate minimum number of pages

Aug 16th, 2022
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. #include <iostream>
  2. #include<vector>
  3. #include<climits>
  4. using namespace std;
  5.  
  6. int minAllocation(vector<int> &v, int students){
  7.   int l = 0, r = 0, res = 0;
  8.   for(int i : v){
  9.     l = max(l, i);
  10.     r += i;
  11.   }
  12.  
  13.   while(l < r){
  14.     int mid = l + (r - l) / 2;
  15.     int total = 1, sum = 0;
  16.     for(int i = 0; i < (int) v.size(); i++){
  17.         sum += v[i];
  18.         if(sum > mid){
  19.           total++;
  20.           sum = v[i];
  21.         }
  22.     }
  23.     if(total <= students){
  24.       res = mid;
  25.       r = mid - 1;
  26.     }
  27.     else{
  28.       l = mid + 1;
  29.     }
  30.   }
  31.   return res;
  32.  
  33. }
  34.  
  35. int main()
  36. {
  37.     int n;
  38.     cin >> n;
  39.     vector<int> v(n);
  40.     for(int i = 0; i < n; i++)
  41.       cin >> v[i];
  42.     int students;
  43.     cin >> students;
  44.     cout << minAllocation(v, students) << '\n';
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement