hdu2093 考试排行
发布时间: 2012-08-31 12:55:03 作者: rapoo
hdu2093 考试排名
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2093
题目:
考试排名Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5525 Accepted Submission(s): 1935
Problem Description
若每次错误提交的罚分为20分,则其排名从高到低应该是这样的:
Josephus 5 376
John 4 284
Alice 4 352
Smith 3 167
Bob 2 325
Bush 0 0
InputOutputSample InputSample Output#include<iostream>#include<cmath>#include<stdio.h>#include<map>#include<string>#include<set>const int M=6;//开始不知道什么时候结束输出,还以为是默认6行呢using namespace std;struct person{char name[10];int num; //解决的问题数int allt; //解决问题的总时间};int cmp(const void *a,const void *b){struct person *c=(struct person *)a;struct person *d=(struct person *)b;if(c->num!=d->num) //按解决问题数排序return d->num-c->num;else{if(c->allt!=d->allt) //按总时间数排序return c->allt-d->allt;elsereturn strcmp(c->name,d->name); //按名字的字典序排序}}int main(){ int n,i,j,m,x;cin>>n>>m;struct person p[1000];i=0;while(scanf("%s",p[i].name)!=EOF){p[i].num=0;p[i].allt=0;for(j=0;j<n;j++){cin>>x;if(x>0){p[i].num++;p[i].allt+=x;if(getchar()=='('){cin>>x;p[i].allt+=x*m;getchar();}}}i++;}qsort(p,i,sizeof(p[0]),cmp); //排序for(j=0;j<i;j++)printf("%-10s %2d %4d\n",p[j].name,p[j].num,p[j].allt);return 0;}