Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. bool check (int m, int n, int k, vector<int> &v) {
  8.     int cnt = 0;
  9.     if (m == 0) return false;
  10.     for(int i = 0; i < n; i++) {
  11.         cnt += (v[i] / m);
  12.     }
  13.     if (cnt == k) return true;
  14.     else return false;
  15. }
  16.  
  17. int right_BS (int mx, int n, int k, vector<int> &v) {
  18.     int m, L, R;
  19.     L = 0;
  20.     R = mx;
  21.     while (R - L > 1) {
  22.         m = (L + R) / 2;
  23.         if (check(m, n, k, v)) {
  24.             L = m;
  25.         } else {
  26.             R = m;
  27.         }
  28.     }
  29.     if (check(L, n, k, v)) return L;
  30.     else return 0;
  31. }
  32.  
  33. int main () {
  34.     int n, k, mx = -1;
  35.     cin >> n >> k;
  36.     vector<int> v(n);
  37.  
  38.     for(int i = 0; i < n; i++) {
  39.         cin >> v[i];
  40.         if (v[i] >= mx) mx = v[i];
  41.     }
  42.  
  43.     cout << right_BS(mx, n, k, v);
  44.     system("pause");
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement