您的位置:首页 > 其它

九度:1014<排序>

2014-03-01 21:46 337 查看
浙大2005年研究生机试

排序

#include <stdio.h>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

struct Stu{
char id[30];
int score;
bool operator < (const Stu& A) const{
if(score != A.score)
return score > A.score;
else
return strcmp(id, A.id) < 0;
}
};

int main(){
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif

int n;
while(scanf("%d", &n) && n){
int M, G;

scanf("%d %d", &M, &G);

Stu s[1010];
int question[20];

int i=1;
while(M-- >0){
scanf("%d", &question[i++]);
}

int m;
i=0;
while(n-->0){
scanf("%s %d", s[i].id, &m);

s[i].score=0;
int num;
while(m-->0){
scanf("%d", &num);
s[i].score += question[num];
}

if(s[i].score < G){ //不过线的,直接不保存
//i=i-1;
continue;
}
i++;
}// for

sort(s, s+i);
printf("%d\n", i);
int j;
for(j=0; j<i; j++){
printf("%s %d\n", s[j].id, s[j].score);
}

}//while
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: