No.553 AlphaCoder Rating
タグ : / 解いたユーザー数 120
作問者 : ciel / テスター : mai
問題文
AlphaCoderでは、ユーザーのコンテストパフォーマンスからレーティングが算出される。
新しいパフォーマンスから順にRPerf1...RPerfN(今までN回パフォーマンスが算出されているとする)とすると、レーティングは以下のようになる。
$ F(n)=\dfrac{\sqrt{\sum_{i=1}^{n}0.81^i}}{\sum_{i=1}^{n}0.9^i} $
$ f(n)=\dfrac{F(n)-F(\infty)}{F(1)-F(\infty)} \times 1200 $
$ g(X)=2.0^\tfrac{X}{800} $
$ Rating_n = g^{-1} (\dfrac{\sum_{i=1}^n g(RPerf_i) \times 0.9^i}{\sum_{i=1}^n 0.9^i}) - f(n) $
なおg^-1はgの逆関数を表すとする
(追記:y=(xの式)をxについて解いてxとyを入れ替えると逆関数になります。が、これを追記したのはコンテスト後なので、この追記による難易度変更は行いません)。
参加回数NとパフォーマンスRPerf1...RPerfNを与えるので、レーティングを整数で算出せよ。±1の絶対誤差が認められる。
入力
N RPerf1 ... RPerfN
1行目:参加回数(1≤N≤100)
2〜N-1行目:RPerfi(1≤i≤N)
制約:
1000≤RPerfi≤4000
なお、Ratingiが負になることはないものとします
(このため、ランダムケースにおいては1500≤RPerfiが保証されます)
出力
RatingNを1行で出力して下さい。
サンプル
サンプル1
入力
1 2000
出力
800
パフォーマンス平均は2000で、f(1)=1200のため、レーティングは800になります。
サンプル2
入力
2 2000 2000
出力
1255
f(2)=745.4です。
サンプル3
入力
3 1500 2000 2500
出力
1492
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。