問題一覧 > 通常問題

No.118 門松列(2)

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 通常問題
タグ : / 解いたユーザー数 201
作問者 : yuki2006yuki2006
2 ProblemId : 221 / 出題時の順位表
問題文最終更新日: 2016-05-24 14:37:13

問題文

玄関に飾る門松を作っている時に、あることに気づいた。

$N$本の竹を高さをそれぞれ$A_i$としたときに、
それらから$3$本を自由に選んでよく、自由に並び替えて良い。
その時に何組の選び方の数が「門松列」になっているかを知りたくなった。

「門松列」とは、選んだ「$3$つの竹の長さの降順で$2$番目が、左または右側になっているもの」、「$3$つの長さはすべて異なる」という条件も満たすものであるとする。

$N$本の竹の高さが与えられるので、「門松列」にすることができる3つの竹の選び方の数を求めてください。
(並び順が違っても、同じ竹の組み合わせなら同じとカウントする。)

答えの数がintより多くなるので、(longよりは大きくならないようです)その値を$\rm mod\ 10^9+7$で求めてください。

それぞれの竹は番号が振ってあるので区別ができるとする。

入力

$N$
$A_1\ A_2 \dots A_N$

入力は全て整数で与えられる。
$3\le N \le 100000=10^5$
$1\le A_i \le 100=10^2,1\le i \le N$

出力

「門松列」になる組み合わせ数を$\rm mod\ 10^9+7$で求めてください。

サンプル

サンプル1
入力
3
1 2 3
出力
1

この3つの竹で門松列を作ることができます。

サンプル2
入力
6
1 2 2 3 3 3
出力
6

長さ2の竹,長さ3の竹はそれぞれ区別できるので、6種類の選び方があるようです。

サンプル3
入力
10
13 54 87 47 99 33 2 56 95 85
出力
120

この場合、${}_{10} C_3$と同じになります。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。