问题 4485 --编程挑战

4485: 编程挑战

时间限制: 3 Sec  内存限制: 128 MB
提交: 3  解决: 1
[提交][状态][命题人:]

题目描述

张老师要举办一场时长为t的编程挑战赛,有s个同学报名参加,张老师将同学们编号为1~m,比赛结束后将会取成绩最好的a名同学获一等奖,接下来b名为二等奖,接下来c名为三等奖。由于比赛时间较长,张老师为了激励同学们做题,临时做出决定,他会在一些时间点查看当前名次情况,给当前排名在前k名的同学准备小奖品。为了避免重复颁奖,每个同学以自己获得的最好的奖作为最终成绩 ( 一等奖>二等奖>三等奖>小奖品 ) 。为了颁奖方便,张老师希望你编一个程序通过读取oj数据自动生成每个学生的获奖情况。

由于奖金有限,小奖品和最终奖项取奖时,若有同分人数超过取奖人数的情况,则都不能获奖。

输入

输出

按顺序输出一行共s个整数,每个数字代表一个同学的获奖情况。

1-4分别代表一等奖、二等奖、三等奖、小奖品,0代表该同学未获奖。

样例输入
Copy
10 10 3
1 2 3 2
4 10
-1
6 10
1 40
2 50
6 70
-1
1 10
3 10
-1
3 10
10 50
8 60
样例输出
Copy
3 3 3 4 0 1 0 2 0 3

提示

样例解释

时刻1得分情况:0 0 0 10 0 0 0 0 0 0

4号同学获得小奖品

时刻5得分情况:40 50 0 10 0 80 0 0 0 0

6、2号同学获得小奖品

时刻7得分情况:50 50 10 10 0 80 0 0 0 0

6号同学获得小奖品

时刻10(比赛结束)得分情况:50 50 20 10 0 80 0 60 0 50

6号同学分数最高,获得一等奖

8号同学获得二等奖。

1、2、10号同学并列50分,超过二等奖取奖人数,变为三等奖。

三等奖还剩余1人,所以3号同学获得三等奖。

(2、6号同学已经获奖,所以无法获得小奖品,只有4号同学最终获得小奖品。)


来源

[提交][状态]