#HT1015. 最多加k次1

最多加k次1

题目描述

给你一个包含 nn 个整数的数列 a1,a2,,ana_1, a_2, \ldots, a_n。你的任务是找出这个数列中出现次数最多的那个数。

在正式开始找这个数之前,你被允许对这个数列进行不超过 kk 次操作 —— 每一次操作,你可以选择这个数列中的一个数,并将其数值加 11。对数列中的同一个数进行多次加 11 操作是允许的,但是操作的总次数不能超过 kk 次。

你需要通过最多 kk 次操作让出现次数最多的那个数出现的次数最大。同时你还需要求出出现最多次的那个数是什么。如果存在多个数出现的次数最多,你需要输出数值最小的那个数。

输入格式

输入的第一行包含两个整数 nnkk,以一个空格分隔(1n105,0k1091 \le n\le 10^5, 0 \le k \le 10^9),分别表示数列的大小及最多操作次数。

输入的第二行包含 nn 个整数,两两之间以一个空格分隔,依次表示初始时数列中的每个整数 a1,a2,,an(109ai109)a_1, a_2, \ldots, a_n(-10^9 \le a_i \le 10^9)

输出格式

输出共一行,包含两个整数,以一个空格分隔。其中,第一个整数表示在不超过 kk 次操作的情况下出现次数最多的那个数出现的次数;第二个整数表示出现次数最多的那个数(如果存在多个出现次数最多的数,输出数值最小的那个)。

样例

5 3
6 3 4 0 2
3 4
3 4
5 5 5
3 5
5 3
3 1 2 2 1
4 2

样例解释

  • 样例1中,我们可以对 a2a_2 进行一次操作,对 a5a_5 进行两次操作,这样数列会变为 6,4,4,0,46,4,4,0,4,数字 44 出现了 33 次;
  • 样例2中,我们不需要进行任何操作就能保证数字 55 出现了 33 次;
  • 样例3中,我们可以对 a2a_2a5a_5 各进行一次操作,这样数列会变成 3,2,2,2,23,2,2,2,2,数字 22 出现了 44 次。

数据范围

  • 对于 50%50\% 的数据,1n,k1000,1000ai10001 \le n,k \le 1000, -1000 \le a_i \le 1000
  • 对于 100%100\% 的数据,1n105,0k109,109ai1091 \le n \le 10^5, 0 \le k \le 10^9, -10^9 \le a_i \le 10^9