Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>//bug225
- #include <stdio.h>
- #include <vector>
- #include <algorithm>
- #include <set>
- using namespace std;
- int n, k;
- int* v;
- bool can(int x)
- {
- int sum = 0;
- for(int i = 0; i < n - 1; i++) sum += v[i] / x;
- return sum >= k;
- }
- void bs()
- {
- int l = 1; int r = *max_element(v, v+n); cout << r << endl;
- while(r-l > 1){
- int mid = (l + r) / 2;
- if(can(mid)) l = mid;
- else r = mid;
- }
- int result = -1;
- for(int i = l; i <= r; i++) if(can(i)) result = i;
- cout << result << endl;
- }
- int main()
- {
- #ifdef _DEBUG
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- scanf("%d%d", &n, &k);
- v = new int[n];
- for(int i = 0; i < n; i++) scanf("%d", &v[i]);
- sort(v, v + n);
- bs();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement