ルクの競プロ部屋

学生の競プロ生活を見たい人はどぞ

Yukicoder灰<No.21A>

問題

問題はこちら
問題文↓

N個の数字が与えられるので、これをK個のグループに振り分ける
グループごとに平均を計算し, それらをもとに 最大の平均 - 最小の平均 を計算し、
最後に小数点以下を切り上げその値を「平均の差」と呼ぶ。
平均の差を最も大きくするようなグループ分けをしたとき、平均の差はいくつになるか答えよ。

解法

難しいことがごちゃごちゃ書いているが、
結局は{{最大の要素},{...},{...},{...},{最小の要素}}と分ければ必ず平均の差は最大の要素-最小の要素となり、
これが答えとなる

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (ll i = 0; i < (n); ++i)
#define rep1(i, n) for (ll i = 1; i < (n); ++i)
#define rrep(i, n) for (ll i = n; i > 0; --i)
#define bitrep(i, n) for (ll i = 0; i < (1 << n); ++i)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define yesNo(b) ((b) ? "Yes" : "No")
using ll = long long;
using ull = unsigned long long;
using ld = long double;
string alphabet = "abcdefghijklmnopqrstuvwxyz";
string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const double pi = 3.141592653589793;
int smallMOD = 998244353;
int bigMOD = 1000000007;

int main()
{
    int n, a;
    cin >> n >> a;
    vector<int> A(n);
    rep(i, n) cin >> A[i];
    sort(all(A));
    cout << (A.back() - A[0]) << endl;
    return 0;
}