100 atcoder#ABC116D. [ABC116D] Various Sushi

[ABC116D] Various Sushi

配点 : 400400

問題文

NN 個の寿司があり、それぞれの寿司には「ネタ」tit_i と「おいしさ」did_i のパラメータが設定されています。 あなたはこの NN 個の寿司の中から KK 個を選んで食べようとしています。 この時のあなたの「満足ポイント」は、以下のようにして計算されます。

  • 「満足ポイント」は、「おいしさ基礎ポイント」と、「種類ボーナスポイント」の和である。
  • 「おいしさ基礎ポイント」は、食べた寿司の「おいしさ」の総和である。
  • 「種類ボーナスポイント」は、食べた寿司の「ネタ」の種類数を xx としたとき、xxx*x である。

あなたは、「満足ポイント」をできるだけ大きくしたいです。 この時の「満足ポイント」の値を求めてください。

制約

  • 1KN1051 \leqq K \leqq N \leqq 10^5
  • 1tiN1 \leqq t_i \leqq N
  • 1di1091 \leqq d_i \leqq 10^9
  • 入力はすべて整数である。

入力

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

NN KK

t1t_1 d1d_1

t2t_2 d2d_2

..

..

..

tNt_N dNd_N

出力

あなたの得られる「満足ポイント」の最大値を出力してください。

5 3
1 9
1 7
2 6
2 5
3 1
26

寿司 1,2,31,2,3 を食べた時、

  • 「おいしさ基礎ポイント」は、9+7+6=229+7+6=22
  • 「種類ボーナスポイント」は、22=42*2=4

で、得られる「満足ポイント」は 2626 となり、これが最適です。

7 4
1 1
2 1
3 1
4 6
4 5
4 5
4 5
25

寿司 1,2,3,41,2,3,4 を食べるのが最適です。

6 5
5 1000000000
2 990000000
3 980000000
6 970000000
6 960000000
4 950000000
4900000016

出力が 3232 bit型整数に収まらない場合もあることに注意して下さい。