# Number of Distinct Averages Problem & Solution

You are given a 0-indexed integer array `nums` of even length.

As long as `nums` is not empty, you must repetitively:

• Find the minimum number in `nums` and remove it.
• Find the maximum number in `nums` and remove it.
• Calculate the average of the two removed numbers.

The average of two numbers `a` and `b` is `(a + b) / 2`.

For example, the average of 2 and 3 is (2 + 3) / 2 = 2.5. Return the number of distinct averages calculated using the above process.

Note that when there is a tie for a minimum or maximum number, any can be removed.

## C++ Solution

``````#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")

static const int _=[](){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();

class Solution {
public:
int distinctAverages(vector<int>& nums) {
sort(nums.begin(), nums.end()); // nlogn
set<float> unique; // logn
int i = 0, j = nums.size() - 1;
while (i < j) {
unique.insert((nums[i] + nums[j]) / 2.0);
++i;
--j;
}

return unique.size();
}
};
``````

## Start Here

Many paths, there are. Follow yours, you must.