191. 华为OD-优秀学员统计(100分)

难度 2
  • 标签:
  • 华为OD真题100分题型
题目描述
题解
题库

华为OD-优秀学员统计(100分)

题目描述

公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个 idid,每天的打卡记录记录当天打卡员工的 idid 集合,一共 30 天。

请你实现代码帮助统计出打卡次数 top5 的员工。加入打卡次数相同,将较早参与打卡的员工排在前面,如果开始参与打卡的时间还是一样,将 idid 较小的员工排在前面。

注:不考虑并列的情况,按规则返回前 5 名员工的 idid 即可,如果当月打卡的员工少于 5 个,按规则排序返回所有有打卡记录的员工 idid

输入描述

第一行输入为新员工数量 NN,表示新员工编号 idid 为 0 到 N1N-1NN 的范围为 [1,100][1,100]

第二行输入为 30 个整数,表示每天打卡的员工数量,每天至少有 1 名员工打卡。

之后 30 行为每天打卡的员工 idid 集合,idid 不会重复。

输出描述

按顺序输出打卡 top5 员工的 idid,用空格隔开。

样例1

输入

11
4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
0 1 7 10
0 1 6 10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
6 10
7 10

输出

10 0 1 7 6

说明

员工编号范围为 0 ~ 10,idid 为 10 的员工连续打卡 30 天,排第一,idid 为 0,1,6,7 的员工打卡都是两天,idid 为 0,1,7 的员工在第一天就打卡,比 idid 为 6 的员工早,排在前面,0,1,7 按 idid升序排列,所以输出 [10,0,1,7,6][10,0,1,7,6]

样例2

输入

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

输出

0 1 2 3 4

说明

员工编号范围为 0-6,idid 为 0,1,2,3,4,5 的员工打卡次数相同,最早开始打卡的时间也一样,所以按 idid 升序返回前 5 个 idid

样例3

输入

2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0 1
0 1

输出

1 0

说明

只有两名员工参与打卡,按规则排序输出两名员工的 idid