区队选拔
来源:互联网 发布:工程动画软件 编辑:程序博客网 时间:2024/05/16 14:01
【问题描述】
一年一度的合肥市小学信息学竞赛即将开始。为了选拔参加比赛的选手,某区进行了信息学选拔活动,因为名额有限,需要根据选拔考试的成绩由高到底选择参加市赛的人员。
选拔考试有3道试题,参加考试的学生人数有N个人,最终只能有M个人参加市赛。选拔规则如下:
先按总分从高到低排序,如果两个同学总分相同,再按第一题得分从高到低排序,如果两个同学总分和第一题得分都相同,那么规定考号小的同学排在前面,这样,每个学生的排序是唯一确定的。
你的任务是先根据输入的3道试题的分数(每道题总分100分)计算总分,然后按上述规则排序,最后按排名顺序输出能参加市赛的考号和总分。
【输入格式】 select.in
输入文件包含n+1行:
第1行为两个正整数N和M,表示参加选拔的学生人数和最终参加市赛的人数。
第2到N+1行,每行有3个用空格隔开的数字,每个数字都在O到100之间,第j行的3个数字依次表示考号为j-1的学生的第一、第二、第三道题目的成绩。每个学生的考号按照输入顺序编号为l~N (恰好是输入数据的行号减1)。
所给的数据都是正确的,不必检验。
【输出格式】select.out
输出文件共有M行,每行是两个用空格隔开的正整数,依次表示前M名学生的考号和总分。
【样例输入】
5 2
78 44 40
91 91 83
98 51 54
61 88 33
77 46 83
【样例输出】
2 265
5 206
【数据范围】
0<=M
#include<bits/stdc++.h>using namespace std;struct Edge{int num,a,b,c,sum; }s[400];int cmp(Edge x,Edge y){ if(x.sum==y.sum) { if(x.a==y.a) return x.num<y.num; else return x.a>y.a; } else return x.sum>y.sum;}int main(){ int n,m,i; cin>>n>>m; for(i=0;i<n;i++) { cin>>s[i].a>>s[i].b>>s[i].c; s[i].sum=s[i].a+s[i].b+s[i].c; s[i].num=i+1; } sort(s,s+n,cmp); for(i=0;i<m;i++) cout<<s[i].num<<' '<<s[i].sum<<"\n"; return 0;}
阅读全文
0 0
- 区队选拔
- 【题解】SWJTU2015.12校队选拔题解
- 考试 —— NOI2016 山东省队选拔第一轮 Day 1
- HAOI-2015-省队选拔题 T1[BZOJ 4033]
- 2017年南邮集训队选拔 题解
- 志愿者选拔
- 选拔总结
- 选拔忧虑
- 选拔wp
- HUST 1343 C - Coil Judge (哈理工 亚洲区选拔赛前练习赛)
- HUST 1347 Reverse Number(哈理工 亚洲区选拔赛前练习赛)
- 2009南海区集训队初中选拔题1的解题报告
- 选拔后随感
- 选拔人才的五项原则
- 管理者的人员选拔
- 省赛选拔
- 选拔题目总结
- 微软实习生选拔
- Centos7下完美安装并配置mysql5.6
- MyBatis的Mapper映射文件详解
- 端午节个人赛-山东省省赛 fireworks(杨辉三角形+组合数+逆元)
- 读取手机联系人信息
- MyBatis配置文件config详解
- 区队选拔
- U盘系统盘制作(win7 32&64)
- request.getRequestDispatcher()的两个方法forward()/include()
- JavaWeb学习十七(面向接口编程)
- 【FCN实践】03 训练
- Android UI 流畅度相关
- 2017年上海金马五校程序设计竞赛之—Sailing(优先队列+广搜)
- javascript继承
- 52. N-Queens II