#6815. 成绩统计分析

成绩统计分析

题目描述

某次考试后,老师记录了全班同学的成绩,所有成绩均为 00100100 之间的整数。现在需要你编写一个程序,对成绩进行全面的统计分析。请你利用成绩范围固定这一特点,高效地完成以下任务:

  1. 找出众数:出现次数最多的分数。如果有多个众数,返回其中分数最高的那个。
  2. 统计恰好出现 kk 次的分数个数:计算有多少个不同的分数恰好出现了 kk 次(kk 可能为 00,此时你需要统计从未出现过的分数个数)。
  3. 按频率排序:将所有出现次数大于 00 的分数,按照出现次数从高到低排序;次数相同的,按分数从高到低排序。输出排序后的分数序列。

输入格式

第一行包含两个整数 n,kn, k,分别表示成绩个数和题目中给定的整数 kk
第二行包含 nn 个整数,表示每个同学的成绩,整数之间用空格分隔。

输出格式

一行,若干个整数,依次为:
众数恰好出现 kk 次的分数个数、以及任务 3 排序后的分数序列。
数字之间用空格分隔。

样例 #1

样例输入 #1

8 2
90 85 90 78 85 90 78 100

样例输出 #1

90 2 90 85 78 100

样例解释 #1

各分数出现次数:100:1100:190:390:385:285:278:278:2,其余为 00

  • 众数:9090 出现 33 次,唯一最多,返回 9090
  • 恰好出现 22 次的分数有 85857878,共 22 个。
  • 出现次数 >0>0 的分数排序:909033 次)最前,85857878 同为 22 次,按分数从高到低为 85,7885, 78,最后是 10010011 次)。序列为 [90,85,78,100][90, 85, 78, 100]
    合并输出:90 2 90 85 78 100

样例 #2

样例输入 #2

5 1
60 60 70 70 80

样例输出 #2

70 1 70 60 80

样例解释 #2

计数:60:260:270:270:280:180:1

  • 众数:60607070 同出现 22 次,取分数高的 7070
  • 恰好出现 11 次的分数:只有 8080,共 11 个。
  • 排序:7070606022 次),按分数降序为 70,6070, 60;再是 808011 次)。序列 [70,60,80][70, 60, 80]
    合并输出:70 1 70 60 80

样例 #3

样例输入 #3

3 0
90 90 90

样例输出 #3

90 100 90

样例解释 #3

计数:90:390:3,其余 01000\sim 100 的分数均出现 00 次。

  • 众数:9090
  • 恰好出现 00 次的分数:0890\sim 899110091\sim 100100100 个不同的分数。
  • 出现次数 >0>0 的分数只有 9090,序列为 [90][90]
    合并输出:90 100 90

数据范围与提示

  • 对于 100%100\% 的数据,1n1051 \le n \le 10^50k1050 \le k \le 10^50成绩1000 \le \text{成绩} \le 100