平均求めるだけ
問題概要
個の 0 以上の整数 が与えられる。これらの値のうち、最大値と最小値を除去する (複数あるときはそのうちの 1 つ)。
残った 個の値の平均値 (小数点以下切り捨て) を求めよ。
制約
- データセット数
考えたこと
でできるけど、実装上はソートして先頭と末尾を除いて足して平均をとるのが楽そう。その場合の計算量は になる。
#include <bits/stdc++.h> using namespace std; int main() { int N; while (cin >> N, N) { vector<int> a(N); for (int i = 0; i < N; ++i) cin >> a[i]; sort(a.begin(), a.end()); int S = 0; for (int i = 1; i+1 < N; ++i) S += a[i]; cout << S / (N-2) << endl; } }