3864 - 最大数对和

题目描述

给定一个包含 N 个整数的数组。请从数组中选出 M有序数对

每组有序数对由数组中的两个元素组成,且每组有序数对只能用一次。请编程计算出,在给定的数组中,选出的 M有序数对的和的最大值是多少。

本题中的有序数对,指的是符合如下两个条件其中之一数对:

  1. N 个数中,选出两个不同位置的整数。比如第 i 个数 A_i 和第 j 个数 A_ji \neq j),则 A_i, A_jA_j, A_i 为两组不同的有序数对。

  2. N 个数中,选出同一个位置的整数 2 次,组成一组有序数对。比如第 i 个数 A_i, A_i 即构成一组有序数对。

输入

第一行包含两个整数 NM,分别表示数组中元素的个数和需要选择的有序数对数量。

第二行包含 N 个整数 A_1, A_2, ..., A_N,表示数组中的每个元素的值。

输出

输出一个整数,表示选出的 M 个有序数对的和的最大值。

样例

输入

5 3
34 33 10 14 19

输出

202

输入

9 14
110 24 21 34 1 3 5 5 3

输出

1837

输入

9 73
64141 40773 79105 16076 67597 52981 5828 66249 75177

输出

8128170
说明

样例 1 说明

5 个数:34, 33, 10, 14, 19,需要选 3 个有序数对。

一种可能的方案:

  • (34, 34),和为 34 + 34 = 68
  • (34, 33),和为 34 + 33 = 67
  • (33, 34),和为 33 + 34 = 67; 总和为 68 + 67 + 67 = 202

数据范围

对于 15\% 的数据,满足所有的 A_i 全部相同。

对于 50\% 的数据,满足 1 \le N \le 100

对于 100\% 的数据,满足 1 ≤ N ≤ 10^51 ≤ M ≤ N^21 ≤ A_i ≤ 10^5

来源

月赛

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 2 枚
难度 基础


上一题 下一题