18107 校赛排名

xiaoxiao2021-02-28  111

18107 校赛排名

时间限制:4000MS  内存限制:65535K 提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC;VC

Description

校赛结束了,每一个参赛选手由3个数据项构成(通过题数,用时分钟数,姓名),排名按照通过题数排序 通过题数多的排前,同题数的,罚时少的排前。如果题数相同,罚时也相同,而按数据读取的先后排。 给你N个参赛选手的数据,按排序先后,输出姓名

输入格式

第一个数为N,(N<=500000) 此后,每行一个参赛选手的数据,通过题数,用时分钟数,姓名,前两者为整型数,姓名为字符串(不多于20个字符)

输出格式

姓名排名

输入样例

4 3 5 Jon 5 100 Smith 3 5 Tom 6 95 Hel

输出样例

Hel Smith Jon Tom

提示

由于有500000个数据,输入和输出务必使用scanf和printf #include <iostream> #include <vector> #include<algorithm> #include <cstdio> #include <utility> #include <string> using namespace std; typedef struct gra { int first; int second; int order; char a[20]; }gra; bool gradeodring(gra a,gra b) { if(a.first==b.first) if(a.second==b.second) return a.order>b.order; else return a.second<b.second; return a.first>b.first; } int main() { //freopen("a.txt","r",stdin); vector<gra> grade; gra b; int n; scanf("%d",&n); while(n--) { scanf("%d%d%s",&b.first,&b.second,&b.a); b.order=n; { grade.push_back(b); } } sort(grade.begin(),grade.end(),gradeodring); vector<gra>::iterator it; for(it=grade.begin();it!=grade.end();it++) printf("%s\n",it->a); }
转载请注明原文地址: https://www.6miu.com/read-59173.html

最新回复(0)