ABC161B Popular Vote

Popular Vote

题目大意:有 \(n\) 件商品进行了满意调查,商品 \(i\)\(a_i\) 票,现在要选出 \(m\) 件商品去销售,要求这 \(m\) 件商品每件的票数不能小于总票数的 \(\frac{1}{4m}\) ,问能否选出 \(m\) 件商品进行销售,如果可以,输出 Yes ,否则输出 No
这题的话数据不大,直接读入后遍历一遍就行了。

#include <bits/stdc++.h>
using namespace std;

inline long long read(){    //快读
    long long s = 0, w = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9'){
        if (ch == '-') w = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9'){
        s = s * 10 + ch - '0';
        ch = getchar();
    }
    return s * w;
}

bool cmp(int x, int y){    //sort中从大到小排序的参数,不解释了。
    return x > y;
}

long long n, m, a[111], sum; //定义数据,n,m,a见题,sum记录总和
int main(){
    n = read(), m = read();
    for (int i = 1; i <= n; i++){
        a[i] = read();
        sum += a[i];    //计算票数总和。
    }
    sort (a+1, a+n+1, cmp); //对a数组进行从大到小的排序,因为买商品肯定是先买票数高的。
    double k = sum / 4.0 / m;   //计算总票数的1/4m
    for (int i = 1; i <= m; i++){
        if (a[i] < k){  //由于a是从大到小排序,所以如果这个商品不符合,那么后面的商品也一定不符合
            cout << "No" << endl;
            return 0;   //直接结束程序,理由如上
        }
    }
    cout << "Yes" << endl;  //如果程序没有提前结束,就证明满足条件
    return 0;
}
posted @ 2020-04-05 10:49  litluo  阅读(143)  评论(0编辑  收藏  举报