Tyvj 1130 奖学金
2011-08-19 12:56
99 查看
题目: | 奖学金 | |
来源: | Tyvj 1130 | |
题目大意: | 先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分,输出前5名学生的学号和总分 | |
数据范围: | 6<=n<=300 | |
样例: | 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 | 6 265 4 264 3 258 2 244 1 237 |
做题思路: | 貌似要按三个顺序排序,多关键字快排解决哈 | |
知识点: | 排序 |
type act=record id,x,ch:longint; end; var a:array[0..310]of act; i,n,t:longint; procedure qsort(l,r:longint); var i,j:longint; k,t:act; begin i:=l;j:=r; k:=a[(l+r) shr 1]; repeat while(a[i].x>k.x)or((a[i].x=k.x)and(a[i].ch>k.ch))or((a[i].x=k.x)and(a[i].ch=k.ch)and(a[i].id>k.id)) do inc(i); while(a[j].x<k.x)or((a[j].x=k.x)and(a[j].ch<k.ch))or((a[j].x=k.x)and(a[j].ch=k.ch)and(a[j].id>k.id)) do dec(j); ifi<=j then begin t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end; until i>j; ifi<r then qsort(i,r); ifj>l then qsort(l,j); end; begin readln(n); fori:=1 to n do begin read(a[i].ch); read(t); inc(a[i].x,t); inc(a[i].x,a[i].ch); readln(t); inc(a[i].x,t); a[i].id:=i; end; qsort(1,n); fori:=1 to 5 do begin writeln(a[i].id,' ',a[i].x); end; end.题目来源:http://www.tyvj.cn:8080/Problem_Show.asp?id=1130
相关文章推荐
- Tyvj_P1002 谁拿了最多奖学金
- [TYVJ] P1002 谁拿了最多奖学金
- 【Tyvj】P1002 谁拿了最多奖学金【某下午刷水题系列】
- tyvj P1002 谁拿了最多奖学金
- tyvj 1002 谁拿了最多奖学金
- 本院学生获奖学金赴港大学习
- 连接mysql发生错误1130的解决方案
- 解决远程连接mysql错误1130
- tyvj P1000:A+B problem
- 疑撞死我国奖学金女生 伦敦双层巴士司机被捕
- tyvj p1017冗余关系
- 【tyvj1106】登山
- 『tony1130』企业持续集成之成熟度模型---SD2.0 topic
- tyvj-Begin P1034 Begin2 - Unit1 - 银行存款
- TYVJ 1064 新三国争霸
- tyvj 1111 舞会 有向图强连通分量 Kosaraju模板 tarjan模板
- TYVJ 1065 津津的储蓄计划 解题报告
- TYVJ 1085 派对 解题报告
- TYVJ 1093 验证数独 解题报告
- 奖学金