欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Codeforces Round #491 (Div. 2)---B

程序员文章站 2022-06-02 12:12:18
...

Codeforces Round #491 (Div. 2)---B

可以改变把一串数字中的某个数变成5,直到平均数四舍五入达到了5

贪心的想法,最先改变最小的数字,平均值上升的越快,所以先排序,挨个修改算平均值,O(nlog(n)) 解决

#include <bits/stdc++.h>
using namespace std;
int a[20000];
int main(){
    int n;
    cin >> n;
    double sum = 0;
    for (int i=0; i<n; i++) {
        cin >> a[i];
        sum += a[i];
    }
    double ave = sum/n;
    ave = floor(ave + 0.5);
    sort(a, a+n);
    int cnt = 0;
    for (int i=0; i<n; i++) {
        if (ave == 5) {
            break;
        }else{
            sum = sum - a[i] + 5;
            ave = (sum)/n;
            ave = floor(ave + 0.5);
            cnt++;
        }
    }
    cout << cnt << endl;
}

相关标签: 水题