18107 校赛排名
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
作者
admin
就用了个sort()的水题;唯一要注意的坑就是题目要求题数和时间都相同的时候是要按输入的顺序输出的,,所以给sort()写比较子的时候要注意得是稳定排序才可以;我这里是直接用了stable_sort()就过了;当然,也可以用另一个技巧:每输入一个人的数据,令time*n-i;这样一来就不会存在有题数相同的同时又时间相同的情况了。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <set> 9 #include <map> 10 #include <queue> 11 #include <stack> 12 #include <utility> 13 #include <vector> 14 #define ll long long 15 #define inf 0x3f3f3f3f 16 #define MAXN 500000 17 using namespace std; 18 19 typedef struct node 20 { 21 int solve,time; 22 char name[21]; 23 }node; 24 node a[MAXN+5]; 25 bool cmp(node a,node b) 26 { 27 if(a.solve!=b.solve) 28 return a.solve>b.solve; 29 else 30 return a.time<b.time; 31 } 32 int main() 33 { 34 //freopen("input.txt","r",stdin); 35 int n; 36 scanf("%d",&n); 37 for(int i=0;i<n;i++) 38 scanf("%d%d%s",&a[i].solve,&a[i].time,a[i].name); 39 stable_sort(a,a+n,cmp); 40 for(int i=0;i<n;i++) 41 printf("%s\n",a[i].name); 42 return 0; 43 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)