[ACM_数据结构] 竞赛排名
2013-12-26 12:01
281 查看
比赛排名
Time Limit:1000MS Memory Limit:32768K
现在,我们得到了每支队伍的提交情况,你的任务就是给出排序后的结果。
刚开始一直错最后把重载<改了一下就过啦!注意重载<时也要把次数、时间都相同的情况的情况考虑进去并把队名按照字母包顺序排列!!!
Time Limit:1000MS Memory Limit:32768K
Description:
欢迎参加浙江工业大学“亚信联创杯”程序设计大赛,本次竞赛采用与 ACM/ICPC 相同的排名规则。也就是说,首先按照在规定时间内,做出的题数进行排名。如果多支队伍解题数目相同,则根据总用时加入惩罚时间进行排名。总用时和惩罚时间由每道解答正确的试题的用时加上惩罚时间而成。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不计时。现在,我们得到了每支队伍的提交情况,你的任务就是给出排序后的结果。
Input:
只有一组数据,第一行为一个正整数 N (N <= 200) 。接下来 N 行,每行以一个队名开始,没有两个队的队名相同。这一行剩下的是该队正确提交时间和错误次数。一个负数表示该题未通过,一个非负数表示通过该题的时间,A(B) 表示通过时间为A,且之前错误过B次。Output:
顺序输出队伍,每行由队名、解题数和总时间,并用一个空格隔开。Sample Input:
10 实验班1124王志鹏 2(1) 27(1) 36(1) 43 13 -2 19 89(1) 16 实验班1826赵扬 2 -3 50 136(2) 3 -1 20(1) 73(2) 17 健行理0118汪伟 0 20 130 41(1) 3 123(3) 23 149(1) 6 实验班0222肖健伟 3 73(1) 41 50(1) 53 -5 88 105 109 友情备用账号8 3 -2 67(1) 59 11 18 53 13 实验班0708郭亚东 1 -10 12 102(3) 30 -6 48 70(1) 73 计算机0302*陈诗妮 12 -2 118(1) 87 39 47 74 93 实验班1807金科清 1 4 8 11(1) 12 81(3) 22 29 32 实验班1401边韵强 0 130(4) 17 26(1) 4(1) 31 39 42 健行理0205葛人楷 14(1) -13 85(1) 60(2) 23 19 133(2) 27
Sample Output:
实验班1807金科清 9 280 健行理0118汪伟 9 595 实验班1124王志鹏 8 325 实验班1401边韵强 8 409 实验班0222肖健伟 8 562 友情备用账号8 7 244 实验班1826赵扬 7 401 实验班0708郭亚东 7 416 健行理0205葛人楷 7 481 计算机0302*陈诗妮 7 490
#include<iostream> #include<string> #include<string.h> #include<cstring> #include<sstream> #include<algorithm> using namespace std; class Student{ public: string name; int num; int time; public: Student(){} void Set(string s){ istringstream in(s); string temp; in>>name; num=0;time=0; while(in>>temp){ for(int i=0;i<temp.length();i++) if(temp[i]=='(' || temp[i]==')')temp[i]=' '; istringstream in2(temp); int iTime=0,iWrongNum=0; if(in2>>iTime){ if(iTime>=0){ num++; time+=iTime; if(in2>>iWrongNum){ time+=iWrongNum*20; } } } } } bool operator<(Student& a){ if(num==a.num){ return (time==a.time ? name<a.name:time<a.time); }else return num>a.num; } void print(){ cout<<name<<' '<<num<<' '<<time<<'\n'; } }; int main(){ int N;cin>>N; string s;getline(cin,s); Student students[201]; for(int i=0;i<N;i++){ getline(cin,s); students[i].Set(s); } sort(students,students+N); for(int j=0;j<N;j++) students[j].print(); return 0; }
刚开始一直错最后把重载<改了一下就过啦!注意重载<时也要把次数、时间都相同的情况的情况考虑进去并把队名按照字母包顺序排列!!!
相关文章推荐
- ACM 262. [NOI1997] 竞赛排名(读题)
- 【重磅】机器阅读理解终于超越人类水平!权威竞赛排名中国霸榜,阿里、MSRA、腾讯前二
- [2010山东省第一届ACM大学生程序设计竞赛]——Shopping
- 山东省第一届ACM大学生程序设计竞赛(原题) Ivan comes again!
- Pku acm 2075 Tangled in Cables数据结构题目解题报告(十一)最小生成树:prim算法&amp;amp;二叉查找树
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)
- 山东省第二届ACM大学生程序设计竞赛:Identifiers
- [2011山东省第二届ACM大学生程序设计竞赛]——Mathman Bank
- 关于一些初级ACM竞赛题目的分析和题解(二)。
- Sequence(山东省第二届ACM大学生程序设计竞赛)
- 关于一些初级ACM竞赛题目的分析和题解(七)。
- [ACM_数据结构] 线段树模板
- 挑战程序设计竞赛 算法和数据结构 第6章 递归和分治法
- Ivan comes again!(2010年山东省第一届ACM大学生程序设计竞赛)
- ACM学习历程—NPU1086 随机数 2015年陕西省程序设计竞赛网络预赛(正式赛)C题 (计数排序 || set容器)
- ACM-数据结构-线段树I
- ACM常用模板——数据结构——线段树
- 2014年第七届河南省ACM大学生程序设计竞赛有感
- ACM/ICPC竞赛之STL--pair
- 华东交通大学2014年ACM“双基”程序设计竞赛部分解题报告