zoukankan      html  css  js  c++  java
  • CodeForces-1213D Equalizing by Division

    Description

    You are given an array a consisting of n integers. In one move you can choose any aiai and divide it by 2 rounding down (in other words, in one move you can set (a_i=lfloor frac{a_i}{2} floor)).

    You can perform such an operation any (possibly, zero) number of times with any aiai.

    Your task is to calculate the minimum possible number of operations required to obtain at least kk equal numbers in the array.

    Don't forget that it is possible to have ai=0ai=0 after some operations, thus the answer always exists.

    Input

    The first line of the input contains two integers nn and kk (1≤k≤n≤2⋅1051≤k≤n≤2⋅105) — the number of elements in the array and the number of equal numbers required.

    The second line of the input contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤2⋅1051≤ai≤2⋅105), where aiai is the ii-th element of aa.

    Output

    Print one integer — the minimum possible number of operations required to obtain at least kk equal numbers in the array.

    Examples

    input

    5 3
    1 2 2 4 5
    

    output

    1
    

    input

    5 3
    1 2 3 4 5
    

    output

    2
    

    input

    5 3
    1 2 3 3 3
    

    output

    0
    

    题解

    直接暴力分解。

    排序一遍之后统计每个数出现了多少次,出现k次的时候更新一遍答案即可,打div3的时候硬是没想到,基础过差

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 2e5 + 50;
    int cnt[N];
    int num[N];
    int a[N];
    int main() {
        int n, k;
        scanf("%d%d", &n, &k);
        for (int i = 1; i <= n; i++) {
            scanf("%d", &a[i]);
        }
        sort(a + 1, a + n + 1);
        int res = 1e9;
        for (int i = 1; i <= n; i++) {
            int tmp = 0;
            while (a[i]) {
                cnt[a[i]]++;
                num[a[i]] += tmp;
                if (cnt[a[i]] == k) {
                    res = min(res, num[a[i]]);
                }
                tmp++; a[i] /= 2;
            }
        }
        printf("%d
    ", res);
        return 0;
    }
    
  • 相关阅读:
    INSPIRED启示录 读书笔记
    PHP反射类的理解(代码篇)
    PHP之实现双向链表(代码篇)
    单点登录 SSO 的实现原理 SESSION COOKIE Memcache
    Linux里如何查找文件内容
    PHP获取数组长度的方法 函数参数的比较
    爬虫经验总结
    认证 协议 JWT OAuth Session Cookie
    PHP统计所有字符在字符串中出现的次数
    Nginx 源码安装和调优
  • 原文地址:https://www.cnblogs.com/artoriax/p/11456111.html
Copyright © 2011-2022 走看看