Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <algorithm>
- #include <vector>
- using namespace std;
- int n, a[200000 + 14], k, ans;
- vector<int> s[200000 + 14];
- int main() {
- cin >> n >> k;
- for(int i = 0; i < n; i++) {
- scanf("%d", &a[i]);
- }
- for(int i = 0; i < n; i++) {
- int cur = 0;
- while(a[i] > 0) {
- s[a[i]].push_back(cur);
- a[i] /= 2;
- cur++;
- }
- s[0].push_back(cur);
- }
- ans = 1e9;
- for(int i = 0; i <= 200000; i++) {
- if(s[i].size() < k) {
- continue;
- }
- sort(s[i].begin(), s[i].end());
- int cnt = 0, sum = 0;
- bool fl = false;
- for (auto it : s[i]) {
- sum += it;
- cnt++;
- if(cnt == k) {
- fl = true;
- break;
- }
- }
- if(fl) {
- ans = min(ans, sum);
- }
- }
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement