ABC057 D Maximum Average Sets 

ABC057 D Maximum Average Sets 

D - Maximum Average Sets

 問題概要

N個の品物からA個以上B個以下選び平均の最大値とその選び方が何通りあるか答えなさい。

1≦N≦50

1≦A≦B≦N

1≦v_i≦10^{50}

v_iは全て整数

考察

k個目までの平均をA(k)とします。v_{k+1}A(k)の大小関係によってA(k+1)A(k)と大小関係が決まります。v_{k+1}≧A(k)であれば、A(k+1)≧A(k)のような具合です。

だから、問題の条件下における平均の最大値はv_iの大きい方からA個選んだものということになります。また、平均がこの値を保ったままA個以上の数字を選べるのは、平均値がA番目に大きいv_iと等しいときのみで、選べる数値はこの数のみです。この値をv_Aとしたとき以下の2つの場合分けで答えを求めることが出来ます。

ⅰ.v_iの最大値がv_Aだったとき

つまり、v_iv_AがA個以上ありかつ、それが最大値だったときです。このときv_AをA個から、B個もしくはv_Aの個数まで、取れる通り数の和が答えになります。

ⅱ.上記以外

このときA個以上の値を選ぶことが出来ません。だから、大きい方からA個までにv_Aを何通りの方法でこれを入れれるかが答えになります。よって、v_Aが大きい方からA個に何個あるか数列全体で何個あるかにで答えが決まります。

提出コード

解説コードまんまです...参考になる部分が多かったから丸覚えしたくなったんだもん...

gist.github.com