您的位置:首页 > 其它

【HDOJ】1236 -> 排名

2013-08-17 09:07 281 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1236

心得:

        被WA四次的题,主要难点在于比较函数的写法上。如果成绩不同则按成绩降序排,成绩相同则按学号升序排。

代码:

#include <iostream>
#include <algorithm>
using namespace std;
typedef struct{char ID[21];int score;bool pass;}Data;
bool cmp(const Data &d1,const Data &d2){
if(d1.score!=d2.score) return d1.score>d2.score;
else return strcmp(d1.ID,d2.ID)<0?1:0;
}
int main(){
int n,m,g,i,j,s[10],num,t,sum;
char id[21];
Data d[1000];
while(cin>>n,n){
sum=0;
memset(d,NULL,sizeof(d));
cin>>m>>g;
for(i=0;i<m;i++)
cin>>s[i];
for(i=0;i<n;i++){
cin>>id>>num;
memcpy(d[i].ID,id,sizeof(id));
d[i].score=0;
for(j=0;j<num;j++){
cin>>t;
d[i].score+=s[t-1];
}
if(d[i].score>=g) {d[i].pass=true;sum++;}
else d[i].pass=false;
}
sort(d,d+n,cmp);
cout<<sum<<endl;
for(i=0;i<n;i++){
if(d[i].pass==true) cout<<d[i].ID<<" "<<d[i].score<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: