問題一覧 > 通常問題

No.616 へんなソート

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 95
作問者 : tsutaj / テスター : はむこ
4 ProblemId : 2017 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2017-12-07 14:28:57

問題文

えびちゃんはソートの勉強をしています。ある日、「tsutaj ソート」という変なソートを見つけました。どうやら、だいたい昇順に並んでいる数列を高速に得るときに使うようです。

数列 a を tsutaj ソートすると、必ず転倒数が K 以下であるような数列 a が返ってきます。ここで転倒数とは、i<j であって ai>aj であるような組 (i,j) の個数です。

えびちゃんは、tsutaj ソート後の数列が何通りあるか気になっています。与えられた数列を並び替えたもので、転倒数が K 以下のものの総数を 1,000,000,007 で割った余りを求めてください。

入力

N K
a1 a2  aN

入力は 2 行で与えられる。

1 行目では、数列の長さ N、ソート後の数列の転倒数の上限 K が与えられる。

2 行目では、数列 a が与えられる。i 番目の要素は ai である。

制約

  • 1N300
  • 0KN(N1)2
  • 1ai109
  • ai は相異なる。すなわち、 ij ならば aiaj

出力

与えられた数列を並び替えたもので、転倒数が K 以下のものの総数を 1,000,000,007 で割った余りを 1 行に出力せよ。

サンプル

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

条件を満たす数列は 3 通りあります。

  • 1 2 3 (転倒数 0)
  • 1 3 2 (転倒数 1)
  • 2 1 3 (転倒数 1)
サンプル2
入力
5 7
1 4 5 8 2
出力
106
サンプル3
入力
13 78
3 1 4 15 9 2 6 5 35 89 7 93 23
出力
227020758

1,000,000,007 で割った余りを出力することに注意してください。

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