题目描述
给定一个包含N(1<N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
输入描述
第一行输入两个整数,N和M。其中N<=3000,M<=1000。随后一行输入N个数,表示该序列。
输出描述
输出M个数,表示结果。输出应当按照从大到小的顺序排列。
样例输入
4 5
5 3 6 4
样例输出
11 10 9 9 8
提示
首先将输入的数字存储到数组中。然后维护一个m大小的按照数值大小从小到大排序的优先队列。方法是:两重循环遍历数组,将两个数组的和加入队列中。如果队列的个数大于m,则每次加入队列前,判断这个数值和队首元素的大小,如果比队首元素大,则将其加入到队列中。最后,倒过来输出队列元素就可以了。