atcoder#ABC291B. [ABC291B] Trimmed Mean

[ABC291B] Trimmed Mean

配点 : 200200

問題文

高橋君は体操の大会に参加しています。 大会では、5N5N 人の審査員それぞれが高橋君の演技に対して評点をつけ、それらを元に次のように高橋君の得点が決定されます。

  • 高い評点をつけた方から順に NN 人の審査員による評点を無効にする。
  • 低い評点をつけた方から順に NN 人の審査員による評点を無効にする。
  • 残りの 3N3N 人の審査員による評点の平均点を高橋君の得点とする。

より厳密には、審査員がつけた得点の多重集合 SS (S=5N|S|=5N) に対して次の操作を行って得られたものが高橋君の得点となります。

  • SS の最大の要素(複数ある場合はそのうちの 11 つ)を選び、SS から取り除く」という操作を NN 回繰り返す。
  • SS の最小の要素(複数ある場合はそのうちの 11 つ)を選び、SS から取り除く」という操作を NN 回繰り返す。
  • SS に残った 3N3N 個の要素の平均を高橋君の得点とする。

高橋君の演技に対する、ii 人目 (1i5N)(1\leq i\leq 5N) の審査員の評点は XiX_i 点でした。 高橋君の得点を計算してください。

制約

  • 1N1001\leq N\leq 100
  • 0Xi1000\leq X_i\leq 100
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN

X1X_1 X2X_2 \ldots X5NX_{5N}

出力

高橋君の得点を出力せよ。 なお、真の値との絶対誤差または相対誤差が 10510^{-5} 以下であれば正解として扱われる。

1
10 100 20 50 30
33.333333333333336

N=1N=1 であるので、評点が高い方と低い方からそれぞれ 11 人ずつの審査員による評点を無効にします。 11 番高い評点をつけた審査員は 22 人目 (100100 点) であるため、これを無効にします。 また、11 番低い評点をつけた審査員は 11 人目 (1010 点) であるため、これも無効にします。 よって、最終的な平均点は 20+50+303=33.333\displaystyle\frac{20+50+30}{3}=33.333\cdots となります。

出力は、真の値との絶対誤差または相対誤差が 10510^{-5} 以下であれば正解として扱われる事に注意してください。

2
3 3 3 4 5 6 7 8 99 100
5.500000000000000

N=2N=2 であるので、評点が高い方と低い方からそれぞれ 22 人ずつの審査員による評点を無効にします。 1,21,2 番目に高い評点をつけた審査員は順に 1010 人目 (100100 点), 99 人目 (9999 点) であるため、これを無効にします。 11 番低い評点をつけた審査員は 1,2,31,2,3 人目 (33 点) の 33 人がいるため、このうち 22 人を無効とします。 よって、答えは 3+4+5+6+7+86=5.5\displaystyle\frac{3+4+5+6+7+8}{6}=5.5 となります。

11 番低い評点をつけた 33 人のうちどの 22 人を無効にしたかは、答えに影響しない事に注意してください。