Description

给定一个长度为\(n\)的数组\(a\),提供一种操作:

  • 每次操作从\(a\)选择任意长的子序列。
  • 设其子序列的平均数为\(AVG\)。
  • 然后删去子序列中大于\(AVG\)的值。

操作次数不限,求最多可删除的元素个数。

Constraints

  • \(1 \le n \le 100\)
  • \(1 \le a_i \le 100\)

Solution

构造极端的做法。每次挑选全局最小的值和当前最大的值,显然当前最大的值要被删除。

最后只剩下全局最小的值,因此答案就是\(n - min\_count\)。

Code

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

int main() {
    int T; cin >> T;
    for(auto _ : vs::iota(0, T)) {
        int min_value = 111;
        int min_count = 0;
        int n, temp;
        cin >> n;
        for(auto _ : vs::iota(0, n)) {
            cin >> temp;
            temp -= min_value;
            if(temp < 0) min_value += temp, min_count = 1;
            else if(temp == 0) min_count++;
        }
        cout << n - min_count << endl;
    }
}

Codeforces-1529A Eshag Loves Big Arrays